[404218]: / Code / Tensor Network vs FC Explainability / Dataset 4 / DS4 2TN 3FC TPU kkawchak.ipynb

Download this file

1272 lines (1272 with data), 155.3 kB

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "machine_shape": "hm",
      "gpuType": "V28"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "TPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8XnVMPBXmtRa"
      },
      "source": [
        "# TensorNetworks in Neural Networks.\n",
        "\n",
        "Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
        "\n",
        "First off, let's install tensornetwork"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7HGRsYNAFxME"
      },
      "source": [
        "# !pip install tensornetwork\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import tensorflow as tf\n",
        "# Import tensornetwork\n",
        "import tensornetwork as tn\n",
        "import random\n",
        "import time\n",
        "import pandas as pd\n",
        "# Set the backend to tesorflow\n",
        "# (default is numpy)\n",
        "tn.set_default_backend(\"tensorflow\")\n",
        "np.random.seed(42)\n",
        "random.seed(42)\n",
        "tf.random.set_seed(42)\n",
        "# Explainability code assistance aided by ChatGPT3.5\n",
        "# 2021 Kelly, D. TensorFlow Explainable AI tutorial https://www.youtube.com/watch?v=6xePkn3-LME"
      ],
      "execution_count": 57,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "g1OMCo5XmrYu"
      },
      "source": [
        "# TensorNetwork layer definition\n",
        "\n",
        "Here, we define the TensorNetwork layer we wish to use to replace the fully connected layer. Here, we simply use a 2 node Matrix Product Operator network to replace the normal dense weight matrix.\n",
        "\n",
        "We TensorNetwork's NCon API to keep the code short."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wvSMKtPufnLp"
      },
      "source": [
        "class TNLayer(tf.keras.layers.Layer):\n",
        "\n",
        "  def __init__(self):\n",
        "    super(TNLayer, self).__init__()\n",
        "    # Create the variables for the layer.\n",
        "    self.a_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"a\", trainable=True)\n",
        "    self.b_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"b\", trainable=True)\n",
        "    self.bias = tf.Variable(tf.zeros(shape=(32, 32)),\n",
        "                            name=\"bias\", trainable=True)\n",
        "\n",
        "  def call(self, inputs):\n",
        "    # Define the contraction.\n",
        "    # We break it out so we can parallelize a batch using\n",
        "    # tf.vectorized_map (see below).\n",
        "    def f(input_vec, a_var, b_var, bias_var):\n",
        "      # Reshape to a matrix instead of a vector.\n",
        "      input_vec = tf.reshape(input_vec, (32, 32))\n",
        "\n",
        "      # Now we create the network.\n",
        "      a = tn.Node(a_var)\n",
        "      b = tn.Node(b_var)\n",
        "      x_node = tn.Node(input_vec)\n",
        "      a[1] ^ x_node[0]\n",
        "      b[1] ^ x_node[1]\n",
        "      a[2] ^ b[2]\n",
        "\n",
        "      # The TN should now look like this\n",
        "      #   |     |\n",
        "      #   a --- b\n",
        "      #    \\   /\n",
        "      #      x\n",
        "\n",
        "      # Now we begin the contraction.\n",
        "      c = a @ x_node\n",
        "      result = (c @ b).tensor\n",
        "\n",
        "      # To make the code shorter, we also could've used Ncon.\n",
        "      # The above few lines of code is the same as this:\n",
        "      # result = tn.ncon([x, a_var, b_var], [[1, 2], [-1, 1, 3], [-2, 2, 3]])\n",
        "\n",
        "      # Finally, add bias.\n",
        "      return result + bias_var\n",
        "\n",
        "    # To deal with a batch of items, we can use the tf.vectorized_map\n",
        "    # function.\n",
        "    # https://www.tensorflow.org/api_docs/python/tf/vectorized_map\n",
        "    result = tf.vectorized_map(\n",
        "        lambda vec: f(vec, self.a_var, self.b_var, self.bias), inputs)\n",
        "    return tf.nn.relu(tf.reshape(result, (-1, 1024)))"
      ],
      "execution_count": 58,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V-CVqIhPnhY_"
      },
      "source": [
        "# Smaller model\n",
        "These two models are effectively the same, but notice how the TN layer has nearly 10x fewer parameters."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bbKsmK8wIFTp",
        "outputId": "6f6f514d-bad7-4e9c-d688-5b060ae1eba4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "Dense = tf.keras.layers.Dense\n",
        "tn_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Start Modified Layers\n",
        "     TNLayer(),\n",
        "     TNLayer(),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Finish Modified Layers\n",
        "     Dense(1, activation=None)])\n",
        "tn_model.summary()"
      ],
      "execution_count": 59,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_5\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_25 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " tn_layer_10 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_11 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " dense_26 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_27 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_28 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_29 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 3163137 (12.07 MB)\n",
            "Trainable params: 3163137 (12.07 MB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GWwoYp0WnsLA"
      },
      "source": [
        "# Training a model\n",
        "\n",
        "You can train the TN model just as you would a normal neural network model! Here, we give an example of how to do it in Keras."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qDFzOC7sDBJ-"
      },
      "source": [
        "# Generate points forming intersecting ellipses\n",
        "theta1 = np.linspace(0, 2*np.pi, 240)  # 480/2 = 240 points for each ellipse\n",
        "theta2 = np.linspace(0, 2*np.pi, 240)\n",
        "\n",
        "a1, b1 = 2, 1  # Parameters for ellipse 1\n",
        "a2, b2 = 1, 2  # Parameters for ellipse 2\n",
        "\n",
        "x1 = a1 * np.cos(theta1)\n",
        "y1 = b1 * np.sin(theta1)\n",
        "\n",
        "x2 = a2 * np.cos(theta2)\n",
        "y2 = b2 * np.sin(theta2)\n",
        "\n",
        "X = np.concatenate([np.column_stack((x1, y1)), np.column_stack((x2, y2))])\n",
        "Y = np.concatenate([np.ones((240)), -np.ones((240))])"
      ],
      "execution_count": 60,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "19TWP-1eKURB",
        "outputId": "7699caaa-fc8e-46dc-e5d1-074e9acd8900"
      },
      "execution_count": 61,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1712724060.9568844\n",
            "Wed Apr 10 04:41:00 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "3851d772-b850-496a-b17c-5116a860380b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "tn_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 62,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "15/15 - 2s - loss: 1.0033 - 2s/epoch - 129ms/step\n",
            "Epoch 2/300\n",
            "15/15 - 0s - loss: 1.0005 - 215ms/epoch - 14ms/step\n",
            "Epoch 3/300\n",
            "15/15 - 0s - loss: 1.0007 - 205ms/epoch - 14ms/step\n",
            "Epoch 4/300\n",
            "15/15 - 0s - loss: 1.0004 - 199ms/epoch - 13ms/step\n",
            "Epoch 5/300\n",
            "15/15 - 0s - loss: 1.0003 - 201ms/epoch - 13ms/step\n",
            "Epoch 6/300\n",
            "15/15 - 0s - loss: 0.9964 - 211ms/epoch - 14ms/step\n",
            "Epoch 7/300\n",
            "15/15 - 0s - loss: 0.7836 - 196ms/epoch - 13ms/step\n",
            "Epoch 8/300\n",
            "15/15 - 0s - loss: 0.7404 - 195ms/epoch - 13ms/step\n",
            "Epoch 9/300\n",
            "15/15 - 0s - loss: 0.6306 - 197ms/epoch - 13ms/step\n",
            "Epoch 10/300\n",
            "15/15 - 0s - loss: 0.6182 - 192ms/epoch - 13ms/step\n",
            "Epoch 11/300\n",
            "15/15 - 0s - loss: 0.5448 - 194ms/epoch - 13ms/step\n",
            "Epoch 12/300\n",
            "15/15 - 0s - loss: 0.4692 - 198ms/epoch - 13ms/step\n",
            "Epoch 13/300\n",
            "15/15 - 0s - loss: 0.3769 - 201ms/epoch - 13ms/step\n",
            "Epoch 14/300\n",
            "15/15 - 0s - loss: 0.2859 - 199ms/epoch - 13ms/step\n",
            "Epoch 15/300\n",
            "15/15 - 0s - loss: 0.2407 - 205ms/epoch - 14ms/step\n",
            "Epoch 16/300\n",
            "15/15 - 0s - loss: 0.1914 - 202ms/epoch - 13ms/step\n",
            "Epoch 17/300\n",
            "15/15 - 0s - loss: 0.1443 - 197ms/epoch - 13ms/step\n",
            "Epoch 18/300\n",
            "15/15 - 0s - loss: 0.2152 - 188ms/epoch - 13ms/step\n",
            "Epoch 19/300\n",
            "15/15 - 0s - loss: 0.2475 - 201ms/epoch - 13ms/step\n",
            "Epoch 20/300\n",
            "15/15 - 0s - loss: 0.2013 - 203ms/epoch - 14ms/step\n",
            "Epoch 21/300\n",
            "15/15 - 0s - loss: 0.1093 - 193ms/epoch - 13ms/step\n",
            "Epoch 22/300\n",
            "15/15 - 0s - loss: 0.1784 - 207ms/epoch - 14ms/step\n",
            "Epoch 23/300\n",
            "15/15 - 0s - loss: 0.1615 - 202ms/epoch - 13ms/step\n",
            "Epoch 24/300\n",
            "15/15 - 0s - loss: 0.1204 - 197ms/epoch - 13ms/step\n",
            "Epoch 25/300\n",
            "15/15 - 0s - loss: 0.0821 - 195ms/epoch - 13ms/step\n",
            "Epoch 26/300\n",
            "15/15 - 0s - loss: 0.1266 - 194ms/epoch - 13ms/step\n",
            "Epoch 27/300\n",
            "15/15 - 0s - loss: 0.1203 - 200ms/epoch - 13ms/step\n",
            "Epoch 28/300\n",
            "15/15 - 0s - loss: 0.1239 - 193ms/epoch - 13ms/step\n",
            "Epoch 29/300\n",
            "15/15 - 0s - loss: 0.1555 - 209ms/epoch - 14ms/step\n",
            "Epoch 30/300\n",
            "15/15 - 0s - loss: 0.1180 - 201ms/epoch - 13ms/step\n",
            "Epoch 31/300\n",
            "15/15 - 0s - loss: 0.1331 - 197ms/epoch - 13ms/step\n",
            "Epoch 32/300\n",
            "15/15 - 0s - loss: 0.1266 - 210ms/epoch - 14ms/step\n",
            "Epoch 33/300\n",
            "15/15 - 0s - loss: 0.1219 - 206ms/epoch - 14ms/step\n",
            "Epoch 34/300\n",
            "15/15 - 0s - loss: 0.1136 - 195ms/epoch - 13ms/step\n",
            "Epoch 35/300\n",
            "15/15 - 0s - loss: 0.0917 - 196ms/epoch - 13ms/step\n",
            "Epoch 36/300\n",
            "15/15 - 0s - loss: 0.0782 - 190ms/epoch - 13ms/step\n",
            "Epoch 37/300\n",
            "15/15 - 0s - loss: 0.0764 - 196ms/epoch - 13ms/step\n",
            "Epoch 38/300\n",
            "15/15 - 0s - loss: 0.0841 - 201ms/epoch - 13ms/step\n",
            "Epoch 39/300\n",
            "15/15 - 0s - loss: 0.0982 - 201ms/epoch - 13ms/step\n",
            "Epoch 40/300\n",
            "15/15 - 0s - loss: 0.0960 - 203ms/epoch - 14ms/step\n",
            "Epoch 41/300\n",
            "15/15 - 0s - loss: 0.0772 - 205ms/epoch - 14ms/step\n",
            "Epoch 42/300\n",
            "15/15 - 0s - loss: 0.0894 - 202ms/epoch - 13ms/step\n",
            "Epoch 43/300\n",
            "15/15 - 0s - loss: 0.1671 - 197ms/epoch - 13ms/step\n",
            "Epoch 44/300\n",
            "15/15 - 0s - loss: 0.3511 - 193ms/epoch - 13ms/step\n",
            "Epoch 45/300\n",
            "15/15 - 0s - loss: 0.1783 - 195ms/epoch - 13ms/step\n",
            "Epoch 46/300\n",
            "15/15 - 0s - loss: 0.1043 - 196ms/epoch - 13ms/step\n",
            "Epoch 47/300\n",
            "15/15 - 0s - loss: 0.0940 - 202ms/epoch - 13ms/step\n",
            "Epoch 48/300\n",
            "15/15 - 0s - loss: 0.0898 - 197ms/epoch - 13ms/step\n",
            "Epoch 49/300\n",
            "15/15 - 0s - loss: 0.1133 - 199ms/epoch - 13ms/step\n",
            "Epoch 50/300\n",
            "15/15 - 0s - loss: 0.1529 - 195ms/epoch - 13ms/step\n",
            "Epoch 51/300\n",
            "15/15 - 0s - loss: 0.1010 - 196ms/epoch - 13ms/step\n",
            "Epoch 52/300\n",
            "15/15 - 0s - loss: 0.0762 - 203ms/epoch - 14ms/step\n",
            "Epoch 53/300\n",
            "15/15 - 0s - loss: 0.0906 - 194ms/epoch - 13ms/step\n",
            "Epoch 54/300\n",
            "15/15 - 0s - loss: 0.0678 - 201ms/epoch - 13ms/step\n",
            "Epoch 55/300\n",
            "15/15 - 0s - loss: 0.0472 - 199ms/epoch - 13ms/step\n",
            "Epoch 56/300\n",
            "15/15 - 0s - loss: 0.0748 - 208ms/epoch - 14ms/step\n",
            "Epoch 57/300\n",
            "15/15 - 0s - loss: 0.0589 - 197ms/epoch - 13ms/step\n",
            "Epoch 58/300\n",
            "15/15 - 0s - loss: 0.0855 - 202ms/epoch - 13ms/step\n",
            "Epoch 59/300\n",
            "15/15 - 0s - loss: 0.1313 - 202ms/epoch - 13ms/step\n",
            "Epoch 60/300\n",
            "15/15 - 0s - loss: 0.2059 - 208ms/epoch - 14ms/step\n",
            "Epoch 61/300\n",
            "15/15 - 0s - loss: 0.1152 - 197ms/epoch - 13ms/step\n",
            "Epoch 62/300\n",
            "15/15 - 0s - loss: 0.0946 - 202ms/epoch - 13ms/step\n",
            "Epoch 63/300\n",
            "15/15 - 0s - loss: 0.1052 - 198ms/epoch - 13ms/step\n",
            "Epoch 64/300\n",
            "15/15 - 0s - loss: 0.0576 - 203ms/epoch - 14ms/step\n",
            "Epoch 65/300\n",
            "15/15 - 0s - loss: 0.0784 - 197ms/epoch - 13ms/step\n",
            "Epoch 66/300\n",
            "15/15 - 0s - loss: 0.0827 - 198ms/epoch - 13ms/step\n",
            "Epoch 67/300\n",
            "15/15 - 0s - loss: 0.1710 - 203ms/epoch - 14ms/step\n",
            "Epoch 68/300\n",
            "15/15 - 0s - loss: 0.0836 - 199ms/epoch - 13ms/step\n",
            "Epoch 69/300\n",
            "15/15 - 0s - loss: 0.0686 - 206ms/epoch - 14ms/step\n",
            "Epoch 70/300\n",
            "15/15 - 0s - loss: 0.0781 - 213ms/epoch - 14ms/step\n",
            "Epoch 71/300\n",
            "15/15 - 0s - loss: 0.0933 - 208ms/epoch - 14ms/step\n",
            "Epoch 72/300\n",
            "15/15 - 0s - loss: 0.0864 - 216ms/epoch - 14ms/step\n",
            "Epoch 73/300\n",
            "15/15 - 0s - loss: 0.0679 - 207ms/epoch - 14ms/step\n",
            "Epoch 74/300\n",
            "15/15 - 0s - loss: 0.0829 - 204ms/epoch - 14ms/step\n",
            "Epoch 75/300\n",
            "15/15 - 0s - loss: 0.0964 - 200ms/epoch - 13ms/step\n",
            "Epoch 76/300\n",
            "15/15 - 0s - loss: 0.0744 - 204ms/epoch - 14ms/step\n",
            "Epoch 77/300\n",
            "15/15 - 0s - loss: 0.0668 - 208ms/epoch - 14ms/step\n",
            "Epoch 78/300\n",
            "15/15 - 0s - loss: 0.0520 - 204ms/epoch - 14ms/step\n",
            "Epoch 79/300\n",
            "15/15 - 0s - loss: 0.0741 - 195ms/epoch - 13ms/step\n",
            "Epoch 80/300\n",
            "15/15 - 0s - loss: 0.0819 - 201ms/epoch - 13ms/step\n",
            "Epoch 81/300\n",
            "15/15 - 0s - loss: 0.0830 - 199ms/epoch - 13ms/step\n",
            "Epoch 82/300\n",
            "15/15 - 0s - loss: 0.1094 - 198ms/epoch - 13ms/step\n",
            "Epoch 83/300\n",
            "15/15 - 0s - loss: 0.0908 - 206ms/epoch - 14ms/step\n",
            "Epoch 84/300\n",
            "15/15 - 0s - loss: 0.0817 - 206ms/epoch - 14ms/step\n",
            "Epoch 85/300\n",
            "15/15 - 0s - loss: 0.0437 - 201ms/epoch - 13ms/step\n",
            "Epoch 86/300\n",
            "15/15 - 0s - loss: 0.0524 - 196ms/epoch - 13ms/step\n",
            "Epoch 87/300\n",
            "15/15 - 0s - loss: 0.1300 - 209ms/epoch - 14ms/step\n",
            "Epoch 88/300\n",
            "15/15 - 0s - loss: 0.0771 - 210ms/epoch - 14ms/step\n",
            "Epoch 89/300\n",
            "15/15 - 0s - loss: 0.1041 - 205ms/epoch - 14ms/step\n",
            "Epoch 90/300\n",
            "15/15 - 0s - loss: 0.0709 - 204ms/epoch - 14ms/step\n",
            "Epoch 91/300\n",
            "15/15 - 0s - loss: 0.0506 - 204ms/epoch - 14ms/step\n",
            "Epoch 92/300\n",
            "15/15 - 0s - loss: 0.1132 - 199ms/epoch - 13ms/step\n",
            "Epoch 93/300\n",
            "15/15 - 0s - loss: 0.1250 - 211ms/epoch - 14ms/step\n",
            "Epoch 94/300\n",
            "15/15 - 0s - loss: 0.0776 - 202ms/epoch - 13ms/step\n",
            "Epoch 95/300\n",
            "15/15 - 0s - loss: 0.0643 - 198ms/epoch - 13ms/step\n",
            "Epoch 96/300\n",
            "15/15 - 0s - loss: 0.0772 - 209ms/epoch - 14ms/step\n",
            "Epoch 97/300\n",
            "15/15 - 0s - loss: 0.0806 - 196ms/epoch - 13ms/step\n",
            "Epoch 98/300\n",
            "15/15 - 0s - loss: 0.1220 - 198ms/epoch - 13ms/step\n",
            "Epoch 99/300\n",
            "15/15 - 0s - loss: 0.1137 - 201ms/epoch - 13ms/step\n",
            "Epoch 100/300\n",
            "15/15 - 0s - loss: 0.0942 - 200ms/epoch - 13ms/step\n",
            "Epoch 101/300\n",
            "15/15 - 0s - loss: 0.0542 - 201ms/epoch - 13ms/step\n",
            "Epoch 102/300\n",
            "15/15 - 0s - loss: 0.0619 - 209ms/epoch - 14ms/step\n",
            "Epoch 103/300\n",
            "15/15 - 0s - loss: 0.0546 - 206ms/epoch - 14ms/step\n",
            "Epoch 104/300\n",
            "15/15 - 0s - loss: 0.0405 - 193ms/epoch - 13ms/step\n",
            "Epoch 105/300\n",
            "15/15 - 0s - loss: 0.0494 - 196ms/epoch - 13ms/step\n",
            "Epoch 106/300\n",
            "15/15 - 0s - loss: 0.0534 - 209ms/epoch - 14ms/step\n",
            "Epoch 107/300\n",
            "15/15 - 0s - loss: 0.0944 - 194ms/epoch - 13ms/step\n",
            "Epoch 108/300\n",
            "15/15 - 0s - loss: 0.1091 - 203ms/epoch - 14ms/step\n",
            "Epoch 109/300\n",
            "15/15 - 0s - loss: 0.0613 - 191ms/epoch - 13ms/step\n",
            "Epoch 110/300\n",
            "15/15 - 0s - loss: 0.0595 - 196ms/epoch - 13ms/step\n",
            "Epoch 111/300\n",
            "15/15 - 0s - loss: 0.1136 - 206ms/epoch - 14ms/step\n",
            "Epoch 112/300\n",
            "15/15 - 0s - loss: 0.1008 - 198ms/epoch - 13ms/step\n",
            "Epoch 113/300\n",
            "15/15 - 0s - loss: 0.0660 - 188ms/epoch - 13ms/step\n",
            "Epoch 114/300\n",
            "15/15 - 0s - loss: 0.0557 - 204ms/epoch - 14ms/step\n",
            "Epoch 115/300\n",
            "15/15 - 0s - loss: 0.0442 - 192ms/epoch - 13ms/step\n",
            "Epoch 116/300\n",
            "15/15 - 0s - loss: 0.0504 - 198ms/epoch - 13ms/step\n",
            "Epoch 117/300\n",
            "15/15 - 0s - loss: 0.0985 - 197ms/epoch - 13ms/step\n",
            "Epoch 118/300\n",
            "15/15 - 0s - loss: 0.1116 - 197ms/epoch - 13ms/step\n",
            "Epoch 119/300\n",
            "15/15 - 0s - loss: 0.0781 - 199ms/epoch - 13ms/step\n",
            "Epoch 120/300\n",
            "15/15 - 0s - loss: 0.0940 - 196ms/epoch - 13ms/step\n",
            "Epoch 121/300\n",
            "15/15 - 0s - loss: 0.0667 - 203ms/epoch - 14ms/step\n",
            "Epoch 122/300\n",
            "15/15 - 0s - loss: 0.0459 - 191ms/epoch - 13ms/step\n",
            "Epoch 123/300\n",
            "15/15 - 0s - loss: 0.0366 - 196ms/epoch - 13ms/step\n",
            "Epoch 124/300\n",
            "15/15 - 0s - loss: 0.0595 - 198ms/epoch - 13ms/step\n",
            "Epoch 125/300\n",
            "15/15 - 0s - loss: 0.0428 - 196ms/epoch - 13ms/step\n",
            "Epoch 126/300\n",
            "15/15 - 0s - loss: 0.0489 - 201ms/epoch - 13ms/step\n",
            "Epoch 127/300\n",
            "15/15 - 0s - loss: 0.1301 - 194ms/epoch - 13ms/step\n",
            "Epoch 128/300\n",
            "15/15 - 0s - loss: 0.1166 - 200ms/epoch - 13ms/step\n",
            "Epoch 129/300\n",
            "15/15 - 0s - loss: 0.0690 - 194ms/epoch - 13ms/step\n",
            "Epoch 130/300\n",
            "15/15 - 0s - loss: 0.0600 - 199ms/epoch - 13ms/step\n",
            "Epoch 131/300\n",
            "15/15 - 0s - loss: 0.0542 - 205ms/epoch - 14ms/step\n",
            "Epoch 132/300\n",
            "15/15 - 0s - loss: 0.1061 - 194ms/epoch - 13ms/step\n",
            "Epoch 133/300\n",
            "15/15 - 0s - loss: 0.0816 - 190ms/epoch - 13ms/step\n",
            "Epoch 134/300\n",
            "15/15 - 0s - loss: 0.0753 - 186ms/epoch - 12ms/step\n",
            "Epoch 135/300\n",
            "15/15 - 0s - loss: 0.0983 - 194ms/epoch - 13ms/step\n",
            "Epoch 136/300\n",
            "15/15 - 0s - loss: 0.0922 - 198ms/epoch - 13ms/step\n",
            "Epoch 137/300\n",
            "15/15 - 0s - loss: 0.0517 - 199ms/epoch - 13ms/step\n",
            "Epoch 138/300\n",
            "15/15 - 0s - loss: 0.0364 - 199ms/epoch - 13ms/step\n",
            "Epoch 139/300\n",
            "15/15 - 0s - loss: 0.0471 - 200ms/epoch - 13ms/step\n",
            "Epoch 140/300\n",
            "15/15 - 0s - loss: 0.0712 - 210ms/epoch - 14ms/step\n",
            "Epoch 141/300\n",
            "15/15 - 0s - loss: 0.1116 - 200ms/epoch - 13ms/step\n",
            "Epoch 142/300\n",
            "15/15 - 0s - loss: 0.1339 - 190ms/epoch - 13ms/step\n",
            "Epoch 143/300\n",
            "15/15 - 0s - loss: 0.1648 - 203ms/epoch - 14ms/step\n",
            "Epoch 144/300\n",
            "15/15 - 0s - loss: 0.1009 - 192ms/epoch - 13ms/step\n",
            "Epoch 145/300\n",
            "15/15 - 0s - loss: 0.0553 - 198ms/epoch - 13ms/step\n",
            "Epoch 146/300\n",
            "15/15 - 0s - loss: 0.0380 - 208ms/epoch - 14ms/step\n",
            "Epoch 147/300\n",
            "15/15 - 0s - loss: 0.0540 - 197ms/epoch - 13ms/step\n",
            "Epoch 148/300\n",
            "15/15 - 0s - loss: 0.1167 - 193ms/epoch - 13ms/step\n",
            "Epoch 149/300\n",
            "15/15 - 0s - loss: 0.1349 - 192ms/epoch - 13ms/step\n",
            "Epoch 150/300\n",
            "15/15 - 0s - loss: 0.0868 - 199ms/epoch - 13ms/step\n",
            "Epoch 151/300\n",
            "15/15 - 0s - loss: 0.0908 - 201ms/epoch - 13ms/step\n",
            "Epoch 152/300\n",
            "15/15 - 0s - loss: 0.0681 - 195ms/epoch - 13ms/step\n",
            "Epoch 153/300\n",
            "15/15 - 0s - loss: 0.0631 - 191ms/epoch - 13ms/step\n",
            "Epoch 154/300\n",
            "15/15 - 0s - loss: 0.0460 - 197ms/epoch - 13ms/step\n",
            "Epoch 155/300\n",
            "15/15 - 0s - loss: 0.0596 - 196ms/epoch - 13ms/step\n",
            "Epoch 156/300\n",
            "15/15 - 0s - loss: 0.0600 - 197ms/epoch - 13ms/step\n",
            "Epoch 157/300\n",
            "15/15 - 0s - loss: 0.0555 - 199ms/epoch - 13ms/step\n",
            "Epoch 158/300\n",
            "15/15 - 0s - loss: 0.0616 - 206ms/epoch - 14ms/step\n",
            "Epoch 159/300\n",
            "15/15 - 0s - loss: 0.0738 - 206ms/epoch - 14ms/step\n",
            "Epoch 160/300\n",
            "15/15 - 0s - loss: 0.0567 - 200ms/epoch - 13ms/step\n",
            "Epoch 161/300\n",
            "15/15 - 0s - loss: 0.0463 - 202ms/epoch - 13ms/step\n",
            "Epoch 162/300\n",
            "15/15 - 0s - loss: 0.0614 - 192ms/epoch - 13ms/step\n",
            "Epoch 163/300\n",
            "15/15 - 0s - loss: 0.0901 - 190ms/epoch - 13ms/step\n",
            "Epoch 164/300\n",
            "15/15 - 0s - loss: 0.0942 - 193ms/epoch - 13ms/step\n",
            "Epoch 165/300\n",
            "15/15 - 0s - loss: 0.0600 - 211ms/epoch - 14ms/step\n",
            "Epoch 166/300\n",
            "15/15 - 0s - loss: 0.0484 - 201ms/epoch - 13ms/step\n",
            "Epoch 167/300\n",
            "15/15 - 0s - loss: 0.0437 - 197ms/epoch - 13ms/step\n",
            "Epoch 168/300\n",
            "15/15 - 0s - loss: 0.0841 - 195ms/epoch - 13ms/step\n",
            "Epoch 169/300\n",
            "15/15 - 0s - loss: 0.1097 - 192ms/epoch - 13ms/step\n",
            "Epoch 170/300\n",
            "15/15 - 0s - loss: 0.0582 - 201ms/epoch - 13ms/step\n",
            "Epoch 171/300\n",
            "15/15 - 0s - loss: 0.0576 - 206ms/epoch - 14ms/step\n",
            "Epoch 172/300\n",
            "15/15 - 0s - loss: 0.0444 - 199ms/epoch - 13ms/step\n",
            "Epoch 173/300\n",
            "15/15 - 0s - loss: 0.0330 - 198ms/epoch - 13ms/step\n",
            "Epoch 174/300\n",
            "15/15 - 0s - loss: 0.0279 - 203ms/epoch - 14ms/step\n",
            "Epoch 175/300\n",
            "15/15 - 0s - loss: 0.0431 - 195ms/epoch - 13ms/step\n",
            "Epoch 176/300\n",
            "15/15 - 0s - loss: 0.1152 - 198ms/epoch - 13ms/step\n",
            "Epoch 177/300\n",
            "15/15 - 0s - loss: 0.0987 - 199ms/epoch - 13ms/step\n",
            "Epoch 178/300\n",
            "15/15 - 0s - loss: 0.0707 - 198ms/epoch - 13ms/step\n",
            "Epoch 179/300\n",
            "15/15 - 0s - loss: 0.0627 - 206ms/epoch - 14ms/step\n",
            "Epoch 180/300\n",
            "15/15 - 0s - loss: 0.0630 - 201ms/epoch - 13ms/step\n",
            "Epoch 181/300\n",
            "15/15 - 0s - loss: 0.0524 - 190ms/epoch - 13ms/step\n",
            "Epoch 182/300\n",
            "15/15 - 0s - loss: 0.0822 - 197ms/epoch - 13ms/step\n",
            "Epoch 183/300\n",
            "15/15 - 0s - loss: 0.0791 - 207ms/epoch - 14ms/step\n",
            "Epoch 184/300\n",
            "15/15 - 0s - loss: 0.0725 - 201ms/epoch - 13ms/step\n",
            "Epoch 185/300\n",
            "15/15 - 0s - loss: 0.0477 - 197ms/epoch - 13ms/step\n",
            "Epoch 186/300\n",
            "15/15 - 0s - loss: 0.0459 - 191ms/epoch - 13ms/step\n",
            "Epoch 187/300\n",
            "15/15 - 0s - loss: 0.0458 - 208ms/epoch - 14ms/step\n",
            "Epoch 188/300\n",
            "15/15 - 0s - loss: 0.1305 - 203ms/epoch - 14ms/step\n",
            "Epoch 189/300\n",
            "15/15 - 0s - loss: 0.0905 - 206ms/epoch - 14ms/step\n",
            "Epoch 190/300\n",
            "15/15 - 0s - loss: 0.0563 - 203ms/epoch - 14ms/step\n",
            "Epoch 191/300\n",
            "15/15 - 0s - loss: 0.0439 - 208ms/epoch - 14ms/step\n",
            "Epoch 192/300\n",
            "15/15 - 0s - loss: 0.0551 - 202ms/epoch - 13ms/step\n",
            "Epoch 193/300\n",
            "15/15 - 0s - loss: 0.0470 - 197ms/epoch - 13ms/step\n",
            "Epoch 194/300\n",
            "15/15 - 0s - loss: 0.0347 - 194ms/epoch - 13ms/step\n",
            "Epoch 195/300\n",
            "15/15 - 0s - loss: 0.0631 - 214ms/epoch - 14ms/step\n",
            "Epoch 196/300\n",
            "15/15 - 0s - loss: 0.0648 - 203ms/epoch - 14ms/step\n",
            "Epoch 197/300\n",
            "15/15 - 0s - loss: 0.0969 - 200ms/epoch - 13ms/step\n",
            "Epoch 198/300\n",
            "15/15 - 0s - loss: 0.0468 - 207ms/epoch - 14ms/step\n",
            "Epoch 199/300\n",
            "15/15 - 0s - loss: 0.0434 - 191ms/epoch - 13ms/step\n",
            "Epoch 200/300\n",
            "15/15 - 0s - loss: 0.0575 - 195ms/epoch - 13ms/step\n",
            "Epoch 201/300\n",
            "15/15 - 0s - loss: 0.0498 - 212ms/epoch - 14ms/step\n",
            "Epoch 202/300\n",
            "15/15 - 0s - loss: 0.0662 - 204ms/epoch - 14ms/step\n",
            "Epoch 203/300\n",
            "15/15 - 0s - loss: 0.0786 - 195ms/epoch - 13ms/step\n",
            "Epoch 204/300\n",
            "15/15 - 0s - loss: 0.1181 - 195ms/epoch - 13ms/step\n",
            "Epoch 205/300\n",
            "15/15 - 0s - loss: 0.0577 - 211ms/epoch - 14ms/step\n",
            "Epoch 206/300\n",
            "15/15 - 0s - loss: 0.0439 - 205ms/epoch - 14ms/step\n",
            "Epoch 207/300\n",
            "15/15 - 0s - loss: 0.0494 - 196ms/epoch - 13ms/step\n",
            "Epoch 208/300\n",
            "15/15 - 0s - loss: 0.0987 - 201ms/epoch - 13ms/step\n",
            "Epoch 209/300\n",
            "15/15 - 0s - loss: 0.0647 - 200ms/epoch - 13ms/step\n",
            "Epoch 210/300\n",
            "15/15 - 0s - loss: 0.0348 - 204ms/epoch - 14ms/step\n",
            "Epoch 211/300\n",
            "15/15 - 0s - loss: 0.0781 - 209ms/epoch - 14ms/step\n",
            "Epoch 212/300\n",
            "15/15 - 0s - loss: 0.0710 - 192ms/epoch - 13ms/step\n",
            "Epoch 213/300\n",
            "15/15 - 0s - loss: 0.0787 - 215ms/epoch - 14ms/step\n",
            "Epoch 214/300\n",
            "15/15 - 0s - loss: 0.0483 - 204ms/epoch - 14ms/step\n",
            "Epoch 215/300\n",
            "15/15 - 0s - loss: 0.0472 - 214ms/epoch - 14ms/step\n",
            "Epoch 216/300\n",
            "15/15 - 0s - loss: 0.0638 - 201ms/epoch - 13ms/step\n",
            "Epoch 217/300\n",
            "15/15 - 0s - loss: 0.0716 - 197ms/epoch - 13ms/step\n",
            "Epoch 218/300\n",
            "15/15 - 0s - loss: 0.0743 - 190ms/epoch - 13ms/step\n",
            "Epoch 219/300\n",
            "15/15 - 0s - loss: 0.0620 - 209ms/epoch - 14ms/step\n",
            "Epoch 220/300\n",
            "15/15 - 0s - loss: 0.0553 - 196ms/epoch - 13ms/step\n",
            "Epoch 221/300\n",
            "15/15 - 0s - loss: 0.0396 - 209ms/epoch - 14ms/step\n",
            "Epoch 222/300\n",
            "15/15 - 0s - loss: 0.0330 - 192ms/epoch - 13ms/step\n",
            "Epoch 223/300\n",
            "15/15 - 0s - loss: 0.0495 - 194ms/epoch - 13ms/step\n",
            "Epoch 224/300\n",
            "15/15 - 0s - loss: 0.0816 - 202ms/epoch - 13ms/step\n",
            "Epoch 225/300\n",
            "15/15 - 0s - loss: 0.1607 - 200ms/epoch - 13ms/step\n",
            "Epoch 226/300\n",
            "15/15 - 0s - loss: 0.0887 - 207ms/epoch - 14ms/step\n",
            "Epoch 227/300\n",
            "15/15 - 0s - loss: 0.0617 - 205ms/epoch - 14ms/step\n",
            "Epoch 228/300\n",
            "15/15 - 0s - loss: 0.0581 - 207ms/epoch - 14ms/step\n",
            "Epoch 229/300\n",
            "15/15 - 0s - loss: 0.0543 - 197ms/epoch - 13ms/step\n",
            "Epoch 230/300\n",
            "15/15 - 0s - loss: 0.0328 - 197ms/epoch - 13ms/step\n",
            "Epoch 231/300\n",
            "15/15 - 0s - loss: 0.0262 - 205ms/epoch - 14ms/step\n",
            "Epoch 232/300\n",
            "15/15 - 0s - loss: 0.0328 - 219ms/epoch - 15ms/step\n",
            "Epoch 233/300\n",
            "15/15 - 0s - loss: 0.0540 - 193ms/epoch - 13ms/step\n",
            "Epoch 234/300\n",
            "15/15 - 0s - loss: 0.0657 - 203ms/epoch - 14ms/step\n",
            "Epoch 235/300\n",
            "15/15 - 0s - loss: 0.0699 - 206ms/epoch - 14ms/step\n",
            "Epoch 236/300\n",
            "15/15 - 0s - loss: 0.0651 - 193ms/epoch - 13ms/step\n",
            "Epoch 237/300\n",
            "15/15 - 0s - loss: 0.1299 - 202ms/epoch - 13ms/step\n",
            "Epoch 238/300\n",
            "15/15 - 0s - loss: 0.0772 - 199ms/epoch - 13ms/step\n",
            "Epoch 239/300\n",
            "15/15 - 0s - loss: 0.0551 - 205ms/epoch - 14ms/step\n",
            "Epoch 240/300\n",
            "15/15 - 0s - loss: 0.0511 - 191ms/epoch - 13ms/step\n",
            "Epoch 241/300\n",
            "15/15 - 0s - loss: 0.0594 - 197ms/epoch - 13ms/step\n",
            "Epoch 242/300\n",
            "15/15 - 0s - loss: 0.0723 - 203ms/epoch - 14ms/step\n",
            "Epoch 243/300\n",
            "15/15 - 0s - loss: 0.0399 - 196ms/epoch - 13ms/step\n",
            "Epoch 244/300\n",
            "15/15 - 0s - loss: 0.0643 - 204ms/epoch - 14ms/step\n",
            "Epoch 245/300\n",
            "15/15 - 0s - loss: 0.0670 - 202ms/epoch - 13ms/step\n",
            "Epoch 246/300\n",
            "15/15 - 0s - loss: 0.0724 - 197ms/epoch - 13ms/step\n",
            "Epoch 247/300\n",
            "15/15 - 0s - loss: 0.0844 - 192ms/epoch - 13ms/step\n",
            "Epoch 248/300\n",
            "15/15 - 0s - loss: 0.0765 - 210ms/epoch - 14ms/step\n",
            "Epoch 249/300\n",
            "15/15 - 0s - loss: 0.0547 - 201ms/epoch - 13ms/step\n",
            "Epoch 250/300\n",
            "15/15 - 0s - loss: 0.0541 - 209ms/epoch - 14ms/step\n",
            "Epoch 251/300\n",
            "15/15 - 0s - loss: 0.0501 - 210ms/epoch - 14ms/step\n",
            "Epoch 252/300\n",
            "15/15 - 0s - loss: 0.0518 - 203ms/epoch - 14ms/step\n",
            "Epoch 253/300\n",
            "15/15 - 0s - loss: 0.0298 - 202ms/epoch - 13ms/step\n",
            "Epoch 254/300\n",
            "15/15 - 0s - loss: 0.0435 - 202ms/epoch - 13ms/step\n",
            "Epoch 255/300\n",
            "15/15 - 0s - loss: 0.0562 - 198ms/epoch - 13ms/step\n",
            "Epoch 256/300\n",
            "15/15 - 0s - loss: 0.0415 - 207ms/epoch - 14ms/step\n",
            "Epoch 257/300\n",
            "15/15 - 0s - loss: 0.0407 - 195ms/epoch - 13ms/step\n",
            "Epoch 258/300\n",
            "15/15 - 0s - loss: 0.0826 - 207ms/epoch - 14ms/step\n",
            "Epoch 259/300\n",
            "15/15 - 0s - loss: 0.1370 - 194ms/epoch - 13ms/step\n",
            "Epoch 260/300\n",
            "15/15 - 0s - loss: 0.1160 - 209ms/epoch - 14ms/step\n",
            "Epoch 261/300\n",
            "15/15 - 0s - loss: 0.0593 - 192ms/epoch - 13ms/step\n",
            "Epoch 262/300\n",
            "15/15 - 0s - loss: 0.0498 - 200ms/epoch - 13ms/step\n",
            "Epoch 263/300\n",
            "15/15 - 0s - loss: 0.0330 - 202ms/epoch - 13ms/step\n",
            "Epoch 264/300\n",
            "15/15 - 0s - loss: 0.0310 - 192ms/epoch - 13ms/step\n",
            "Epoch 265/300\n",
            "15/15 - 0s - loss: 0.0331 - 197ms/epoch - 13ms/step\n",
            "Epoch 266/300\n",
            "15/15 - 0s - loss: 0.0837 - 203ms/epoch - 14ms/step\n",
            "Epoch 267/300\n",
            "15/15 - 0s - loss: 0.0764 - 196ms/epoch - 13ms/step\n",
            "Epoch 268/300\n",
            "15/15 - 0s - loss: 0.0452 - 192ms/epoch - 13ms/step\n",
            "Epoch 269/300\n",
            "15/15 - 0s - loss: 0.0367 - 193ms/epoch - 13ms/step\n",
            "Epoch 270/300\n",
            "15/15 - 0s - loss: 0.0332 - 196ms/epoch - 13ms/step\n",
            "Epoch 271/300\n",
            "15/15 - 0s - loss: 0.0283 - 194ms/epoch - 13ms/step\n",
            "Epoch 272/300\n",
            "15/15 - 0s - loss: 0.0391 - 205ms/epoch - 14ms/step\n",
            "Epoch 273/300\n",
            "15/15 - 0s - loss: 0.0594 - 193ms/epoch - 13ms/step\n",
            "Epoch 274/300\n",
            "15/15 - 0s - loss: 0.0425 - 203ms/epoch - 14ms/step\n",
            "Epoch 275/300\n",
            "15/15 - 0s - loss: 0.0553 - 195ms/epoch - 13ms/step\n",
            "Epoch 276/300\n",
            "15/15 - 0s - loss: 0.0416 - 204ms/epoch - 14ms/step\n",
            "Epoch 277/300\n",
            "15/15 - 0s - loss: 0.0406 - 202ms/epoch - 13ms/step\n",
            "Epoch 278/300\n",
            "15/15 - 0s - loss: 0.0425 - 198ms/epoch - 13ms/step\n",
            "Epoch 279/300\n",
            "15/15 - 0s - loss: 0.0521 - 200ms/epoch - 13ms/step\n",
            "Epoch 280/300\n",
            "15/15 - 0s - loss: 0.0519 - 215ms/epoch - 14ms/step\n",
            "Epoch 281/300\n",
            "15/15 - 0s - loss: 0.0482 - 206ms/epoch - 14ms/step\n",
            "Epoch 282/300\n",
            "15/15 - 0s - loss: 0.0569 - 199ms/epoch - 13ms/step\n",
            "Epoch 283/300\n",
            "15/15 - 0s - loss: 0.0422 - 206ms/epoch - 14ms/step\n",
            "Epoch 284/300\n",
            "15/15 - 0s - loss: 0.0390 - 196ms/epoch - 13ms/step\n",
            "Epoch 285/300\n",
            "15/15 - 0s - loss: 0.0480 - 215ms/epoch - 14ms/step\n",
            "Epoch 286/300\n",
            "15/15 - 0s - loss: 0.0694 - 208ms/epoch - 14ms/step\n",
            "Epoch 287/300\n",
            "15/15 - 0s - loss: 0.0622 - 218ms/epoch - 15ms/step\n",
            "Epoch 288/300\n",
            "15/15 - 0s - loss: 0.0714 - 200ms/epoch - 13ms/step\n",
            "Epoch 289/300\n",
            "15/15 - 0s - loss: 0.0599 - 196ms/epoch - 13ms/step\n",
            "Epoch 290/300\n",
            "15/15 - 0s - loss: 0.0456 - 198ms/epoch - 13ms/step\n",
            "Epoch 291/300\n",
            "15/15 - 0s - loss: 0.0404 - 193ms/epoch - 13ms/step\n",
            "Epoch 292/300\n",
            "15/15 - 0s - loss: 0.0237 - 202ms/epoch - 13ms/step\n",
            "Epoch 293/300\n",
            "15/15 - 0s - loss: 0.0432 - 196ms/epoch - 13ms/step\n",
            "Epoch 294/300\n",
            "15/15 - 0s - loss: 0.1046 - 204ms/epoch - 14ms/step\n",
            "Epoch 295/300\n",
            "15/15 - 0s - loss: 0.1850 - 199ms/epoch - 13ms/step\n",
            "Epoch 296/300\n",
            "15/15 - 0s - loss: 0.1293 - 195ms/epoch - 13ms/step\n",
            "Epoch 297/300\n",
            "15/15 - 0s - loss: 0.0549 - 187ms/epoch - 12ms/step\n",
            "Epoch 298/300\n",
            "15/15 - 0s - loss: 0.0449 - 192ms/epoch - 13ms/step\n",
            "Epoch 299/300\n",
            "15/15 - 0s - loss: 0.1082 - 196ms/epoch - 13ms/step\n",
            "Epoch 300/300\n",
            "15/15 - 0s - loss: 0.0964 - 211ms/epoch - 14ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x7fa3cc7807f0>"
            ]
          },
          "metadata": {},
          "execution_count": 62
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "ff970823-3ee5-42d0-b6a3-9211e05bea4d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 443
        }
      },
      "source": [
        "# Plotting code, feel free to ignore.\n",
        "h = 1.0\n",
        "x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
        "y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
        "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
        "                     np.arange(y_min, y_max, h))\n",
        "\n",
        "# here \"model\" is your model's prediction (classification) function\n",
        "Z = tn_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
        "\n",
        "# Put the result into a color plot\n",
        "Z = Z.reshape(xx.shape)\n",
        "plt.contourf(xx, yy, Z)\n",
        "plt.axis('off')\n",
        "\n",
        "# Plot also the training points\n",
        "plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
      ],
      "execution_count": 63,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "7/7 [==============================] - 0s 6ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7fa5103a1ea0>"
            ]
          },
          "metadata": {},
          "execution_count": 63
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "s_ukr55OORqE",
        "outputId": "26cb5faa-f669-4ae6-afc4-e99b046aba1e"
      },
      "execution_count": 64,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1712724124.073852\n",
            "Wed Apr 10 04:42:04 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "o8HTyvcHchzQ",
        "outputId": "e84f3e14-f97c-466d-c35d-4b93077e6c6a"
      },
      "execution_count": 65,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1712724124.0794735\n",
            "Wed Apr 10 04:42:04 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Function to compute saliency map\n",
        "@tf.function\n",
        "def compute_saliency(input_image):\n",
        "    with tf.GradientTape() as tape:\n",
        "        tape.watch(input_image)\n",
        "        predictions = tn_model(input_image)\n",
        "    grads = tape.gradient(predictions, input_image)\n",
        "    saliency_map = tf.reduce_max(tf.abs(grads), axis=-1)\n",
        "    return saliency_map\n",
        "\n",
        "# Function to compute saliency map using Gradient\n",
        "@tf.function\n",
        "def compute_gradient_saliency(input_image):\n",
        "    with tf.GradientTape() as tape:\n",
        "        tape.watch(input_image)\n",
        "        predictions = tn_model(input_image)\n",
        "    grads = tape.gradient(predictions, input_image)\n",
        "    saliency_map = tf.reduce_max(tf.abs(grads), axis=-1)\n",
        "    return saliency_map\n",
        "\n",
        "# Compute saliency map for the entire grid\n",
        "def compute_saliency_map_grid():\n",
        "    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
        "    input_image = np.c_[xx.ravel(), yy.ravel()]\n",
        "    saliency_map = compute_saliency(tf.constant(input_image, dtype=tf.float32)).numpy()\n",
        "    saliency_map = saliency_map.reshape(xx.shape)\n",
        "    return xx, yy, saliency_map\n",
        "\n",
        "# Compute and plot saliency map for the entire grid\n",
        "xx, yy, saliency_map = compute_saliency_map_grid()\n",
        "\n",
        "# Compute saliency maps for all data points\n",
        "def compute_saliency_maps():\n",
        "    saliency_maps = []\n",
        "    for data_point in X:\n",
        "        saliency_map = compute_gradient_saliency(tf.constant(data_point[None, :], dtype=tf.float32)).numpy()\n",
        "        saliency_maps.append(saliency_map)\n",
        "    return saliency_maps\n",
        "\n",
        "# Find the indices of the data points with the highest saliency values\n",
        "def find_top_indices(saliency_maps, top_k):\n",
        "    top_indices = np.argsort(np.max(saliency_maps, axis=1))[-top_k:]\n",
        "    return top_indices\n",
        "\n",
        "def plot_most_diagnostic(top_indices, top_k, normalized_saliency_values):\n",
        "    plt.figure(figsize=(8, 6))\n",
        "    plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)\n",
        "    plt.scatter(X[top_indices, 0], X[top_indices, 1], marker='o', s=200, facecolors='none', edgecolors='r', linewidths=2)\n",
        "    for i, index in enumerate(top_indices):\n",
        "        plt.annotate(f'{normalized_saliency_values.iloc[index][\"Saliency\"]:.4f}', (X[index, 0], X[index, 1]), xytext=(X[index, 0]+0.35, X[index, 1]+0.25), arrowprops=dict(facecolor='black', arrowstyle='->'))\n",
        "    plt.title(f'Saliency Most Diagnostic Data Points (Top {top_k})')\n",
        "    plt.xlabel('Feature 1')\n",
        "    plt.ylabel('Feature 2')\n",
        "    plt.grid(True)\n",
        "    plt.axis('equal')\n",
        "    plt.show()\n",
        "\n",
        "# Compute saliency maps for all data points\n",
        "saliency_maps = compute_saliency_maps()\n",
        "\n",
        "# Find the indices of the data points with the highest saliency values\n",
        "top_k = 5  # Number of top diagnostic data points to select\n",
        "top_indices = find_top_indices(saliency_maps, top_k)\n",
        "\n",
        "# Create a DataFrame to store the saliency values\n",
        "saliency_df = pd.DataFrame(data=saliency_maps, columns=[\"Saliency\"])\n",
        "\n",
        "# Save the saliency values to a CSV file\n",
        "saliency_df.to_csv(\"saliency_values.csv\", index=False)\n",
        "\n",
        "print(\"Saliency values saved to saliency_values.csv\")\n",
        "\n",
        "# Normalizing the saliency values\n",
        "normalized_saliency = (saliency_df - saliency_df.min()) / (saliency_df.max() - saliency_df.min())\n",
        "\n",
        "# Saving the normalized saliency values to a new CSV file\n",
        "normalized_saliency.to_csv(\"normalized_saliency_values.csv\", index=False)\n",
        "\n",
        "# Plot the most diagnostic data points\n",
        "plot_most_diagnostic(top_indices, top_k, normalized_saliency)\n",
        "\n",
        "print(\"Normalized saliency values saved to normalized_saliency_values.csv\")\n",
        "print(\"Normalized Saliency Top-k:\")\n",
        "print(normalized_saliency.nlargest(top_k, 'Saliency'))\n",
        "print(\"Normalized Saliency Max:\", normalized_saliency.max())\n",
        "print(\"Normalized Saliency Min:\", normalized_saliency.min())\n",
        "print(\"Normalized Saliency Mean:\", normalized_saliency.mean())\n",
        "print(\"Normalized Saliency Median:\", normalized_saliency.median())\n",
        "print(\"Normalized Saliency Mode:\", normalized_saliency.mode())\n",
        "sum_normalized_values = normalized_saliency.sum()\n",
        "print(\"Normalized Saliency Sum:\", sum_normalized_values)\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"Normalized Saliency Standard Deviation:\", normalized_saliency.std())\n",
        "print(\"Normalized Saliency Skewness:\", normalized_saliency.skew())\n",
        "print(\"Normalized Saliency Kurtosis:\", normalized_saliency.kurtosis())\n",
        "print(\"Normalized Saliency Variance:\", normalized_saliency.var())\n",
        "coefficient_variation = (normalized_saliency.std() / normalized_saliency.mean()) * 100\n",
        "print(\"Normalized Saliency Coefficient of Variation:\", coefficient_variation)\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "cumulative_sum = normalized_saliency.cumsum()\n",
        "print(\"Cumulative Sum of Normalized Saliency Values:\", cumulative_sum)\n",
        "mean_cumulative_sum = cumulative_sum / len(normalized_saliency)\n",
        "print(\"Mean of Cumulative Sum of Normalized Saliency Values:\", mean_cumulative_sum)\n",
        "rms = np.sqrt(np.mean(normalized_saliency**2))\n",
        "print(\"Normalized Saliency Root Mean Square:\", rms)\n",
        "q1 = normalized_saliency.quantile(0.25)\n",
        "q2 = normalized_saliency.quantile(0.75)\n",
        "iqr = q2 - q1\n",
        "print(\"Normalized Saliency 25th Percentile:\", q1)\n",
        "print(\"Normalized Saliency 75th Percentile:\", q2)\n",
        "print(\"Normalized Saliency Interquartile Range:\", iqr)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1868
        },
        "id": "95xed6YyDClf",
        "outputId": "f9503d7a-ad2d-4d49-ff2f-fce1e245e55a"
      },
      "execution_count": 66,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Saliency values saved to saliency_values.csv\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 800x600 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIjCAYAAADlfxjoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADieUlEQVR4nOzdd3xT1fsH8M/NXt27pQsoG8reW/YQcAMq4weKgAMUBL+yREVUhjLdIIqiCKiISNl771VGS1u690iafX9/lAZC2+SmTdqkfd6vV1/Qm3NvnuQ2yZNzz3kOw7IsC0IIIYQQQmo5Xk0HQAghhBBCSHWgxJcQQgghhNQJlPgSQgghhJA6gRJfQgghhBBSJ1DiSwghhBBC6gRKfAkhhBBCSJ1AiS8hhBBCCKkTKPElhBBCCCF1AiW+hBBCCCGkTqDEl5Bq1Lt3b/Tu3dv0+71798AwDDZs2FBjMRHuxo8fj4iIiJoOo1otXLgQDMPUdBi1BsMwWLhwYU2HYebTTz9FkyZNYDQaazqUStm9ezcUCgUyMzNrOhTiAijxJcSCK1eu4JlnnkF4eDgkEglCQkLQv39/rFq1qqZDcyqlyRGPx0NSUlKZ2wsKCiCVSsEwDKZPn+6QGK5fv46FCxfi3r17nNqXxlz6I5PJEBYWhuHDh+OHH36ARqNxSJzOSKVSYeHChTh48KBD78eRz/muXbscklCOHz/eLGZ3d3dER0dj2bJl1f438vHHH2PHjh12PWZBQQGWLl2Kd999Fzwer8zjrehn/Pjxdo2jPBXF0qRJE7N2gwYNQsOGDbFkyRKHx0Rcn6CmAyDEWR0/fhx9+vRBWFgYJk+ejMDAQCQlJeHkyZP44osv8Prrr1f5PsLDw1FcXAyhUGiHiGueWCzGL7/8gtmzZ5tt37Ztm8Pv+/r161i0aBF69+5tU6/sunXroFAooNFokJycjP/++w8TJ07EypUrsXPnToSGhprafvPNNy7bK2aJSqXCokWLAMDsigQAvP/++5gzZ45d78+W55yrXbt2Yc2aNQ5JfsViMb799lsAQF5eHv744w+88847OHPmDH799VebjlVcXAyBoHIfvR9//DGeeeYZjBw5slL7l+f777+HXq/H6NGjAQCvvvoq+vXrZ7o9Pj4e8+fPxyuvvIIePXqYtjdo0MBuMVjy6HNfysPDo0y7V199Fe+88w4WLVoENze3aomNuCiWEFKuIUOGsH5+fmxubm6Z29LT0yt1zF69erG9evWqWmBOaMGCBSwA9qmnnmJbt25d5vb+/fuzTz/9NAuAnTZtmkNi+P3331kA7IEDBzi1L405MzOzzG0//fQTy+Px2E6dOtk5SueUmZnJAmAXLFjg0Ptx5HM+bdo01hEfaePGjWPlcrnZNoPBwLZv354FwCYnJ9v9Pisil8vZcePG2fWYrVq1Yl988cUKbz9z5gwLgP3hhx/ser9clPfcVyQ9PZ3l8/nsd9995+CoiKujoQ6EVODu3bto3rw5PD09y9zm7+9v9vsPP/yAvn37wt/fH2KxGM2aNcO6deus3kdFY3xv3ryJZ555Bt7e3pBIJGjfvj3++usvszYbNmwAwzA4duwYZs6cCT8/P8jlcowaNarcsW7//vsvevXqBTc3N7i7u6NDhw7YvHkzAGDBggUQCoXl7vfKK6/A09MTarXa6uMZM2YMLl68iJs3b5q2paWlYf/+/RgzZky5+2RkZOD//u//EBAQAIlEgujoaGzcuLFMu19//RXt2rUzxd+yZUt88cUXpufi2WefBQD06dPHdEm0spfux44di0mTJuHUqVOIiYkxbS9vjO/nn3+Orl27wsfHB1KpFO3atcPWrVvLHLO4uBhvvPEGfH194ebmhieffBLJycllxnyWDge4c+cOxo8fD09PT3h4eGDChAlQqVRmx9Tr9Vi8eDEaNGgAsViMiIgIvPfee2UuwZ89exYDBw6Er68vpFIpIiMjMXHiRAAlf4N+fn4AgEWLFpmeu9KYKhrj+9NPP6Fjx46QyWTw8vJCz549sWfPHs7P8eMqes6PHDmCZ599FmFhYRCLxQgNDcWMGTNQXFxsajN+/HisWbMGAMwuiZfieo644vF4pp7x0qE1XP+OK3u+GYaBUqnExo0byww3KCwsxFtvvYWIiAiIxWL4+/ujf//+OH/+vMXHER8fj8uXL5v18HL1+++/o127dpBKpfD19cWLL76I5ORkszbjx4+HQqFAXFwcBg4cCLlcjuDgYHzwwQdgWZbzfRkMBhQUFFhs4+/vj1atWuHPP/+0+bGQuoUSX0IqEB4ejnPnzuHq1atW265btw7h4eF47733sGzZMoSGhmLq1KmmD2NbXLt2DZ07d8aNGzcwZ84cLFu2DHK5HCNHjsT27dvLtH/99ddx6dIlLFiwAK+99hr+/vvvMuNoN2zYgKFDhyInJwdz587FJ598gtatW2P37t0AgJdeegl6vR5btmwx20+r1WLr1q14+umnIZFIrMbes2dP1KtXz5RQA8CWLVugUCgwdOjQMu2Li4vRu3dvbNq0CWPHjsVnn30GDw8PjB8/3pTUAkBMTAxGjx4NLy8vLF26FJ988gl69+6NY8eOme73jTfeAAC899572LRpEzZt2oSmTZtajbkiL730EgBYTea++OILtGnTBh988AE+/vhjCAQCPPvss/jnn3/M2o0fPx6rVq3CkCFDsHTpUkil0nKfk1LPPfccCgsLsWTJEjz33HPYsGGDaThCqUmTJmH+/Plo27YtVqxYgV69emHJkiV44YUXTG0yMjIwYMAA3Lt3D3PmzMGqVaswduxYnDx5EgDg5+dn+pI2atQo03P31FNPVRjbokWL8NJLL0EoFOKDDz7AokWLEBoaiv3791t8rqwp7zn//fffoVKp8Nprr2HVqlUYOHAgVq1ahZdfftnU5tVXX0X//v0BwBT/pk2bTLdzPUe2uHv3LgDAx8eH89+xJdbO96ZNmyAWi9GjRw/T43v11VcBAFOmTMG6devw9NNPY+3atXjnnXcglUpx48YNi/d5/PhxAEDbtm1teuwbNmzAc889Bz6fjyVLlmDy5MnYtm0bunfvjry8PLO2BoMBgwYNQkBAAD799FO0a9cOCxYswIIFCzjdl0qlgru7Ozw8PODt7Y1p06ahqKio3Lbt2rUzPSZCKlTTXc6EOKs9e/awfD6f5fP5bJcuXdjZs2ez//33H6vVasu0ValUZbYNHDiQrV+/vtm2x4c6xMfHl7mM+MQTT7AtW7Zk1Wq1aZvRaGS7du3KRkVFmbb98MMPLAC2X79+rNFoNG2fMWMGy+fz2by8PJZlWTYvL491c3NjO3XqxBYXF5vF8+h+Xbp0KXOZedu2bZyGDzx6Cfudd95hGzZsaLqtQ4cO7IQJE1iWZcsMdVi5ciULgP3pp59M27RaLdulSxdWoVCwBQUFLMuy7Jtvvsm6u7uzer2+whjsOdSBZVk2NzeXBcCOGjXKtG3cuHFseHi4WbvHz71Wq2VbtGjB9u3b17Tt3LlzLAD2rbfeMms7fvz4MkMMSuOaOHGiWdtRo0axPj4+pt8vXrzIAmAnTZpk1u6dd95hAbD79+9nWZZlt2/fzgJgz5w5U8EzYXmoQ2k8pW7fvs3yeDx21KhRrMFgMGv76N9TeSrznJf32lqyZAnLMAybkJBg2mZpqAOXc1SR0svtmZmZbGZmJnvnzh32448/ZhmGYVu1asWyLPe/Y5ZlK32+WbbioQ4eHh6VGkL0/vvvswDYwsLCCts8PtRBq9Wy/v7+bIsWLczeT3bu3MkCYOfPn2/aNm7cOBYA+/rrr5u2GY1GdujQoaxIJKrw76DUnDlz2HfffZfdsmUL+8svv5iO161bN1an05Vp//HHH7MAKj0UjdQN1ONLSAX69++PEydO4Mknn8SlS5fw6aefYuDAgQgJCSkz7EAqlZr+n5+fj6ysLPTq1QtxcXHIz8/nfJ85OTnYv3+/qfcnKysLWVlZyM7OxsCBA3H79u0ylxNfeeUVs8u6PXr0gMFgQEJCAoCS3tLCwkLMmTOnTK/to/u9/PLLOHXqlKknCwB+/vlnhIaGolevXpwfw5gxY3Dnzh2cOXPG9G9Fwxx27dqFwMBA08QaABAKhXjjjTdQVFSEQ4cOAQA8PT2hVCrNLoE7mkKhAFByGdmSR899bm4u8vPz0aNHD7PLzKU961OnTjXb19IEySlTppj93qNHD2RnZ5su+e7atQsAMHPmTLN2b7/9NgCYejNLh+rs3LkTOp3O4mPhYseOHTAajZg/fz54PPOPkKqWPSvvOX/0+VUqlcjKykLXrl3BsiwuXLjA6bhczpElSqUSfn5+8PPzQ8OGDfHee++hS5cupiswXP+OLbF2vi3x9PTEqVOnkJKSwunxlMrOzoZAIDA971ycPXsWGRkZmDp1qtn7ydChQ9GkSZNye9EfvQJVWtlFq9Vi7969Fu9ryZIl+OSTT/Dcc8/hhRdewIYNG/DRRx/h2LFj5Q5V8fLyAgBkZWVxfjyk7qHElxALOnTogG3btiE3NxenT5/G3LlzUVhYiGeeeQbXr183tTt27Bj69esHuVwOT09P+Pn54b333gMAmxLfO3fugGVZzJs3z/RBW/pTemkwIyPDbJ+wsDCz30vf/HNzcwE8vCTbokULi/f9/PPPQywW4+effzbFvXPnTowdO9amhKZNmzZo0qQJNm/ejJ9//hmBgYHo27dvuW0TEhIQFRVVJoEqHaJQmrxPnToVjRo1wuDBg1GvXj1MnDjRlEw6SunlVGszxHfu3InOnTtDIpHA29vbNHTg0fOekJAAHo+HyMhIs30bNmxY4XGtndfSYz5+jMDAQHh6epqeu169euHpp5/GokWL4OvrixEjRlSpdNjdu3fB4/HQrFmzSu1vSXnPeWJiIsaPHw9vb28oFAr4+fmZvohxfW1xOUeWSCQSxMTEICYmBocPH0ZSUhKOHTuG+vXrA+D+d2yJtfNtyaeffoqrV68iNDQUHTt2xMKFCxEXF8fpsdmq9LE0bty4zG1NmjQp81h5PJ7peSrVqFEjAOBcevBRM2bMAI/HKzdpZh+MG6a608QSSnwJ4UAkEqFDhw74+OOPsW7dOuh0Ovz+++8AShKBJ554AllZWVi+fDn++ecfxMTEYMaMGQBgU/mr0rbvvPOO6YP28Z/HEx0+n1/usVgbJo8AJR+0w4YNMyW+W7duhUajwYsvvmjTcYCSXt8tW7Zg8+bNeP7558skBLby9/fHxYsX8ddff+HJJ5/EgQMHMHjwYIwbN65Kx7WkdGy3peT0yJEjePLJJyGRSLB27Vrs2rULMTExGDNmjM3P/+O4nldrH/IMw2Dr1q04ceIEpk+fjuTkZEycOBHt2rWrcKxkTXn8OTcYDOjfvz/++ecfvPvuu9ixYwdiYmJMk0G5vLbscY74fD769euHfv36oUePHqhXr17lHqCV+ygPlxife+45xMXFYdWqVQgODsZnn32G5s2b499//7W4n4+PD/R6vdWrGs5EKpXCx8cHOTk5ZW4r/ZLg6+tb3WERF0J1fAmxUfv27QEAqampAIC///4bGo0Gf/31l1mvzYEDB2w+dmnPiFAorNRM6/KU1tu8evWqxSQOKBnuMGLECJw5cwY///wz2rRpg+bNm9t8n2PGjMH8+fORmppqNsnoceHh4bh8+TKMRqNZclxaFSI8PNy0TSQSYfjw4Rg+fDiMRiOmTp2Kr776CvPmzUPDhg3t3stTGvfAgQMrbPPHH39AIpHgv//+g1gsNm3/4YcfzNqFh4fDaDQiPj4eUVFRpu137typdHylx7x9+7bZJL709HTk5eWZPXcA0LlzZ3Tu3BkfffQRNm/ejLFjx+LXX3/FpEmTbHruGjRoAKPRiOvXr6N169aVjr88jz/nV65cwa1bt7Bx40azyWzlDXmp6DFwPUdVYcvfcVVYOk9BQUGYOnUqpk6dioyMDLRt2xYfffQRBg8eXOE+pQtBxMfHo1WrVpxiKH0ssbGxZa7kxMbGlnmsRqMRcXFxpl5eALh16xYAVGoVxNIhYKWVSB4VHx8PX1/fcm8jpBT1+BJSgQMHDpTb21I6trL0Ul9pT82jbfPz8yv1werv74/evXvjq6++MiXWj6rMkpwDBgyAm5sblixZUqYk2eOPb/DgwfD19cXSpUtx6NChSvX2AiXJ0cqVK7FkyRJ07NixwnZDhgxBWlqaWTUJvV6PVatWQaFQmC5pZ2dnm+3H4/FMH9Sll+zlcjkAlJlVXhmbN2/Gt99+iy5duuCJJ56osB2fzwfDMDAYDKZt9+7dK7O6Vmkit3btWrPtVVkBcMiQIQCAlStXmm1fvnw5AJgqRuTm5pY5z6UJa+lzJ5PJAHB77kaOHAkej4cPPvigTI9rVXq5y3vOy3ttsSxbbqWEis4/13NUFVz/jqtKLpeXWzXh8SEb/v7+CA4OtjqcpUuXLgBKxu1y1b59e/j7+2P9+vVmx//3339x48aNciuVrF692vR/lmWxevVqCIVCi68ttVpdbk/04sWLwbIsBg0aVOa2c+fOmR4TIRWhHl9CKvD6669DpVJh1KhRaNKkCbRaLY4fP44tW7YgIiICEyZMAFCSWJb2Rr766qsoKirCN998A39//3KTV2vWrFmD7t27o2XLlpg8eTLq16+P9PR0nDhxAvfv38elS5dsOp67uztWrFiBSZMmoUOHDhgzZgy8vLxw6dIlqFQqs1qjQqEQL7zwAlavXg0+n282WcdWb775ptU2r7zyCr766iuMHz8e586dQ0REBLZu3Ypjx45h5cqVprGekyZNQk5ODvr27Yt69eohISEBq1atQuvWrU29na1btwafz8fSpUuRn58PsVhsqq1sydatW6FQKKDVak2riB07dgzR0dGm4SwVGTp0KJYvX45BgwZhzJgxyMjIwJo1a9CwYUNcvnzZ1K5du3Z4+umnsXLlSmRnZ6Nz5844dOiQqeerMr3V0dHRGDduHL7++mvk5eWhV69eOH36NDZu3IiRI0eiT58+AICNGzdi7dq1GDVqFBo0aIDCwkJ88803cHd3NyXPUqkUzZo1w5YtW9CoUSN4e3ujRYsW5Y4Lb9iwIf73v/9h8eLF6NGjB5566imIxWKcOXMGwcHBnJaN5fqcN2nSBA0aNMA777yD5ORkuLu7448//ih33Gu7du0AAG+88QYGDhwIPp+PF154gfM5qgquf8dV1a5dO+zduxfLly9HcHAwIiMj0bhxY9SrVw/PPPMMoqOjoVAosHfvXpw5cwbLli2zeLz69eujRYsW2Lt3r6muszVCoRBLly7FhAkT0KtXL4wePRrp6en44osvEBERYRriVUoikWD37t0YN24cOnXqhH///Rf//PMP3nvvPYs9s2lpaWjTpg1Gjx5t6pn+77//sGvXLgwaNAgjRowwa5+RkYHLly9j2rRpnB4HqcOqvY4EIS7i33//ZSdOnMg2adKEVSgUrEgkYhs2bMi+/vrrZcrl/PXXX2yrVq1YiUTCRkREsEuXLmW///57FgAbHx9vaselnBnLsuzdu3fZl19+mQ0MDGSFQiEbEhLCDhs2jN26daupTWk5s8fLVB04cKDcsl5//fUX27VrV1YqlbLu7u5sx44d2V9++aXM4z59+jQLgB0wYADn58pamapSKGfltvT0dHbChAmsr68vKxKJ2JYtW5Z5PrZu3coOGDCA9ff3Z0UiERsWFsa++uqrbGpqqlm7b775hq1fvz7L5/OtljYrjbn0RyKRsPXq1WOHDRvGfv/992bl5EqVV87su+++Y6OiolixWMw2adKE/eGHH8qUAGNZllUqley0adNYb29vVqFQsCNHjmRjY2NZAOwnn3xSJq7Hn8vS8/3o35NOp2MXLVrERkZGskKhkA0NDWXnzp1rFvv58+fZ0aNHs2FhYaxYLGb9/f3ZYcOGsWfPnjU7/vHjx9l27dqxIpHIrORWeY+FZVn2+++/Z9u0acOKxWLWy8uL7dWrFxsTE1Ph813Z5/z69etsv379WIVCwfr6+rKTJ09mL126VOZ1o9fr2ddff5318/NjGYYxi5nrOSoP19XDuPwds2zF5cy4nO+bN2+yPXv2ZKVSKQuAHTduHKvRaNhZs2ax0dHRrJubGyuXy9no6Gh27dq1VmNmWZZdvnw5q1Aoyi0bx7IVr9y2ZcsW0/n39vZmx44dy96/f9+sTelzd/fuXXbAgAGsTCZjAwIC2AULFpQphfe43Nxc9sUXX2QbNmzIymQyViwWs82bN2c//vjjcktKrlu3jpXJZGal4wgpD8OyVZyBQQipVS5duoTWrVvjxx9/NC0oQBzj4sWLaNOmDX766SeMHTu2psMhdVB+fj7q16+PTz/9FP/3f/9n12OPHz8eW7durZZJlG3atEHv3r2xYsUKh98XcW00xpcQYuabb76BQqGwuHIXsd2jS+yWWrlyJXg8Hnr27FkDERECeHh4YPbs2fjss89sqkDjTHbv3o3bt29j7ty5NR0KcQE0xpcQAqCkOsX169fx9ddfY/r06abJQsQ+Pv30U5w7dw59+vSBQCDAv//+i3///RevvPIKQkNDazo8Uoe9++67ePfdd2s6jEobNGiQ05XmI86LEl9CCICSyXzp6ekYMmQIFi1aVNPh1Dpdu3ZFTEwMFi9ejKKiIoSFhWHhwoX43//+V9OhEUJInUFjfAkhhBBCSJ1AY3wJIYQQQkidQIkvIYQQQgipE2iMrxVGoxEpKSlwc3Oz+5KohBBCCCGk6liWRWFhIYKDg82WDn8cJb5WpKSk0IxrQgghhBAXkJSUhHr16lV4OyW+VpQuNZmUlAR3d/cajobodDrs2bMHAwYMgFAorOlwSDnoHDk/OkfOj86R86Nz5FwKCgoQGhpqdYlwSnytKB3e4O7uTomvE9DpdJDJZHB3d6c3GidF58j50TlyfnSOnB+dI+dkbVgqTW4jhBBCCCF1AiW+hBBCCCGkTqDElxBCCCGE1AmU+BJCCCGEkDqBEl9CCCGEEFInUOJLCCGEEELqBEp8CSGEEEJInUCJLyGEEEIIqRMo8SWEEEIIIXUCJb6EEEIIIaROoMSXEEIIIYTUCZT4EkIIIYSQOoESX0IIqeVYloWRZQEAap0BKq0eAKDVG6DRG8E+uI0QQmo7QU0HQAghxD4KNXpkK7Uo0uqQV6xHkUYPjd4Itd4AIwswAFgAMBogA/DX9XSAxwefAQAGQj7gJhZCLuLDXSJEiLsEIgEfEiEPPIapyYdGCCF24TKJ75IlS7Bt2zbcvHkTUqkUXbt2xdKlS9G4cWOL+/3++++YN28e7t27h6ioKCxduhRDhgyppqgJIcQxtHojCjU6JOerkZyvRpFWD73Rcs9tRbca2JJbDXpArdciUwkAxbicWgAA4DOAt0wEf4UYwR4S+MhEYCgRJoS4IJdJfA8dOoRp06ahQ4cO0Ov1eO+99zBgwABcv34dcrm83H2OHz+O0aNHY8mSJRg2bBg2b96MkSNH4vz582jRokU1PwJCCKmaQrUOKQVqJOSqkK3SVdv9GlggU6lFplKLa+mFEPAY+MpFiPSWI9RTCj6PkmBCiGtwmcR39+7dZr9v2LAB/v7+OHfuHHr27FnuPl988QUGDRqEWbNmAQAWL16MmJgYrF69GuvXr3d4zIQQUlXFOgOS8lS4nalEgUZf0+EAAPRGFmmFGqQVanAyEfCRidDYT4F6nlIaEkEIcWouk/g+Lj8/HwDg7e1dYZsTJ05g5syZZtsGDhyIHTt2VLiPRqOBRqMx/V5QUHKpT6fTQaervh4WUr7Sc0DnwnnROao6lmWRW6zD9bQCpBVp7X8HRoP5v1XAAsgqLEZWYTEEPAahnhJE+SrgLhFW+dh1Gb2OnB+dI+fC9Ty4ZOJrNBrx1ltvoVu3bhaHLKSlpSEgIMBsW0BAANLS0ircZ8mSJVi0aFGZ7Xv27IFMJqt80MSuYmJiajoEYgWdI/tw5LuOLOWK3Y+Zngik2/2odRe9jpwfnSPnoFKpOLVzycR32rRpuHr1Ko4ePWr3Y8+dO9esl7igoAChoaEYMGAA3N3d7X5/xDY6nQ4xMTHo378/hELqUXJGdI5spzcaEZ+tQmxmEdR6o+Pv0GiALOUKVMEtAR7foXclE/HRLsQT/gqaEGcLeh05PzpHzqX0Cr01Lpf4Tp8+HTt37sThw4dRr149i20DAwORnm7e95Ceno7AwMAK9xGLxRCLxWW2C4VC+sN2InQ+nB+dI+uMLIvEXBXOJ+dDozcCYByeiJrh8R1+fyo9cCQhD+5iPtqFeiHQTeLQ+6tt6HXk/OgcOQeu58BlFrBgWRbTp0/H9u3bsX//fkRGRlrdp0uXLti3b5/ZtpiYGHTp0sVRYRJCCCfZSg3+vJqKEwm5D5Le2q1AY8CBO1k4cCcTOSoHjFsmhBAOXKbHd9q0adi8eTP+/PNPuLm5mcbpenh4QCqVAgBefvllhISEYMmSJQCAN998E7169cKyZcswdOhQ/Prrrzh79iy+/vrrGnschJC6La9Yhyup+bifr3b4fTEAhDwGMpEAEiEPQj4PAh4DHmtA6n0gwlsKPcsrWeRCZ4DWwEJjcGwSnlaoQVpsBhr7KdAmxIOGPxBCqpXLJL7r1q0DAPTu3dts+w8//IDx48cDABITE8HjPezE7tq1KzZv3oz3338f7733HqKiorBjxw6q4UsIqXYsy+JOthLnkvIqXEiiKgQ8Bj5SIXzdxPCSCOHvJoZYUP4wBp1Oh9RLQPt6XmUuD+oNJSu9FWkMSClQI7NIgzy1DlbWxrBZbGYR7uWq0DrYA5HeMkqACSHVwmUSXy5ryR88eLDMtmeffRbPPvusAyIihBBuspVanErMQb7avnV4vWVChHpIEekjh1Ron7G6Aj4PCj4PCrEQge4l43ENRhZ5xTok5xcjMVeFQm3Vy6ABgEZvxKnEXKQUqNEl3JsWwiCEOJzLJL6EEOJqWJZFXLYSZ+zYy+slFSLKV45QLxlE/OqZpsHnMfCRi+AjF6FVsAd0BiPic1SIzShEkR2S4KS8YqQWJKNDqDcivKlsJCHEcSjxJYQQB1Bq9TgSl43c4qoXtxfwGDT0kaORvwJyUc2/bQv5PDTyU6CRnwL5ah1iM4oQn6Os0nAIvRE4kZCDvGItWgV70ApwhBCHqPl3UEIIqWXyi7WIuZ0JnaFq/bxSIQ+tAt0R7i132mEAHhIhOoZ5oV09T9zMKMSN9ELoqpAB38gowr0cFXo39IOnlEpEEULsixJfQgixE5ZlcSE5H7GZRVU6jlzIQ5t6XgjxkLhMzyefx6B5oDuaBrjhVmYRrqTkQ1/J/LdYb8Se2HQ80cgPPrKyddUJIaSyKPElhBA7YFkWpxJzEJ9TXOljiPkMWgZ7oKGP3GWrHPAYBk383RDlq8C1tAJcTy+s1PhmAwvsic1ElK8cbet5uswXAEKIc6PElxBCqihfrcORuGwUaipftaGpvwLRwbWnri2fx6BVsAcifeS4mlqAe7mqSh3ndpYSOoMRXSJ87BwhIaQuosSXEEKqQKXVIyY2o9LjWv3kInQO94ZCXDvfjt3EAnSJ8EZDXzmOxmdDXYlV6u7lFqNAk45uET619nkihFQPl1mymBBCnM39vGL8ezO9UkkvnwHahHjgiSi/OpHM+SnEGNEiCE393Sq1f45Khz23MlCss08NYUJI3USJLyGEVMK9HBWOxGdDW4nKDV5SIUa2DEYTf7daM7SBCx7DoHWIB3o18IVcZPuCGxq9EXtvZSBbqXVAdISQuoASX0IIsVFKfjFOJuTYvB8DoEWgG/o38q+2xSecUbC7BMOaBqCeh8TmfYu0BsTcykBqgdoBkRFCaru6+85LCCGVcDklH4fism2uVCDgMRjQ2B8tgzyctiZvdeLxeOge6YN29TzBt/HpYAEcic+GqgqTCQkhdRMlvoQQwlFSrgrX0gtt3s9fIcKgxv7wlokcEJXrYhgGjfwUGNQkAEIbvwwYjCz+up6GxEpWiyCE1E2U+BJCiBUsy+JmRiGO3bN9eEO4lxR9G/rBTUKrkFXEXSLEoCYBCFDYtlgFC+D4vRxkq2jMLyGEG0p8CSHEitjMIlxIzrdpeAMDoFWgGzqHe9epCWyVpRAL0KehL0I9bRv3ywI4fDcLOZT8EkI4oMSXEEIsyFNpcTE53+b9etT3QfMgD1pxzAYMw6BrhA+a+its2k+tNyLmVgYyijQOiowQUltQ4ksIIRVIzFXh39gMm3p6+QyD7pE+CPGQOiyu2qyk5JknOoZ62bSfkQWOxWeDZSu3kAghpG6gxJcQQspRoNbZPKaXzwDDmwcg1JOS3qpq4CtH2xAPm/ZR643YdTMdKi0tckEIKR8lvoQQ8hi1zoBj8dk27cNngN4N/SAV1v5V2KpLY383DGjsZ9M+BWo99t3OgM5g+9LIhJDajxJfQgh5hEpnwH+xGchTc68RKxXyMLx5EPxtrEpArPORiW0e9lCkNeBmRpGDIiKEuDJKfAkh5BHnknKh0nG/VM5jgO6RPpAKbV+Cl3DTwFeOPg19YUup36tpBbickk9jfgkhZijxJYSQB25lFuJ+PvelcMUCHp6I8oOvnHp6HS3QTYL29Wzr+b2WXoi72UoHRUQIcUWU+BJCCIAb6YU4d9+2smV9G1LSW50a+MoRHWzbhLdLKfk03pcQYkKJLyGkzlPpDLiYYlvS2zHUC55SWo2tujULcEP7UE/O7bUGFrtuUKUHQkgJSnwJIXWa3mDEsTjbKjj0qu+DBr5yB0VErGngI0egG/eedpXOgMNxWTTelxBCiS8hpO4yGFkcuJuFLBuWu430liGYFqeoUTyGQc/6vqjnwX1549xiHVIKuI/fJoTUTpT4EkLqrLgcJbKU3JPeEHcxOthYWos4Bp/HoFukD6QC7h9jR+KykVFIyxoTUpdR4ksIqZOKdQZcTing3N5fIULPBn7g21JTizgUj2HQvb4P5zJnLICDcVlQarnXaCaE1C6U+BJC6pxinQF7YjOg5Tjbn8cAbUI8HRsUqRRfuRgDG/tz/jAzGFncyqTFLQipqyjxJYTUOReS81DMcZEKBkCvBr7wlokcGxSpNE+pCM0C3Ti3v5lRhOT8YgdGRAhxVpT4EkLqlEKNDgm5xeA6v79TuBcC3bhPoiI1o1mAOwJsWDL6SFw2MotovC8hdQ0lvoSQOkOp1WPvrUzO7T0kAoR5yhwYEbEXPo950DPPrbYyC+BKGvcx3oSQ2oESX0JInXEsPhsaPbdxvQoRH30b0mQ2V8LnMWhXz5Nz+/RCDVILaMgDIXUJJb6EkDohW6VFtkrHeYhD3yg/SIR8h8ZE7M9XLkYLG8b7HrybjQwa8kBInUGJLyGk1tPqjThxj/vqbBFeMshFAgdGRBypZZAH6ntzH6JyJjGXVnUjpI6gxJcQUquxLItDcVko1HCr4uCvEKFjGC1S4epah3hwru9boNFTry8hdQQlvoSQWi29SMN5dbbSCVI0rtf1iQV8m8b7Ho3PRpGGFrYgpLajxJcQUmuxLIvraYWc2zf2U0DAo7fF2qKhrwLNA7iN99UaWByJz6YhD4TUcvQOTwiptS6nFiCd4yXsQDcxWgS6OzgiUt2aB7pDyPGTLq9Yh0yOVwcIIa6JEl9CSK2UpdTgejq33l4hj0Gv+j40xKEW4vMYRAd7cm5/JbWAen0JqcUo8SWE1Eq3Moo4t23srwCPhjjUWlF+CjT1V3Bqm1Gkwbn7eY4NiBBSY+idnhBS6+QX65CUz21hAk+JAE38udd9Ja6pZZAHhBx79G9nKZGv1jk4IkJITXCpxPfw4cMYPnw4goODwTAMduzYYbH9wYMHwTBMmZ+0tLTqCZgQUu2KdQbsu50JI4er1UIeg36N/CHku9RbIakEPo+x6QvO3SylA6MhhNQUl3q3VyqViI6Oxpo1a2zaLzY2FqmpqaYff39/B0VICKlpd7KKoDVYX5aYAdDQV05Jbx3SLNANQW5iTm3vZBUhv5h6fQmpbVxqaaLBgwdj8ODBNu/n7+8PT09P+wdECHE6d7OUnJYl5vMYRPlxG/dJagcew6B7fR/8cSkF1r4aGVhg/51MDG8WCAF9OSKk1nCpxLeyWrduDY1GgxYtWmDhwoXo1q1bhW01Gg00mofljwoKCgAAOp0OOh19+69ppeeAzoXzqslzdCuzCMVa6/fLAOge6QsRw9bJv6W6/joK9xTjXo7K6hcktdaAu5kFqO8jr5a4HlXXz5EroHPkXLieB4Z10botDMNg+/btGDlyZIVtYmNjcfDgQbRv3x4ajQbffvstNm3ahFOnTqFt27bl7rNw4UIsWrSozPbNmzdDJuO+9jshhBBCCKkeKpUKY8aMQX5+PtzdK67JXqsT3/L06tULYWFh2LRpU7m3l9fjGxoaiqysLItPJKkeOp0OMTEx6N+/P4RCYU2HQ8pRU+foWHw20go1nIY59KzvA38Ft7GetRG9joACtQ57bmVyatu+nicivKu344POkfOjc+RcCgoK4OvrazXxrRNDHR7VsWNHHD16tMLbxWIxxOKyH4hCoZD+sJ0InQ/nV53nyMiySFPpwfL4VttGessQ7CkHw9BiFXX5deQjFMJHIUG2yvrl0bMphQjylEMhrv6PzLp8jlwFnSPnwPUc1LkR+xcvXkRQUFBNh0EIsRMjy+L4vRxwuXblJuajU5gXJb0EANDIj1t5MwYlVR4IIa7PpXp8i4qKcOfOHdPv8fHxuHjxIry9vREWFoa5c+ciOTkZP/74IwBg5cqViIyMRPPmzaFWq/Htt99i//792LNnT009BEKInd3LUSEpj9tiFZHe1NNLHgr3kiK1QIp7uZb/flgA9/PVaB1SPXERQhzHpRLfs2fPok+fPqbfZ86cCQAYN24cNmzYgNTUVCQmJppu12q1ePvtt5GcnAyZTIZWrVph7969ZscghLi2W5nceuJ4DGpkdj5xXgzDoHO4N5LyUmCwcsmgUKPHldR8tAzyqKboCCGO4FKJb+/evWFpLt6GDRvMfp89ezZmz57t4KgIITXFYGSRx3GRgR6RPpAKrY8BJnULwzAI9ZQgIbfY6sTIq2mFCPWUwVNK4zkJcVV1bowvIaR2MLIsjsRlcariEKAQI9hD6vCYiGtq7O/G6e+IxvoS4voo8SWEuKR7OSqkFmqsNwSqvRQVcS3eMhG6hHtbbccCSOP4N0cIcU6U+BJCXNJtjmN7pUI+wryot5dYFuEtg4hnfeJjoUaPq2kF1RARIcQRKPElhLgcI8siT219bC8PQN+GvhDw6K2OWBfuLQOXmh9XUgtQqNE7PB5CiP3RpwEhxKWwLIuTCTkwchiU6e8mhruEJiIRbhr7KcDjUO6OAXA3W+n4gAghdkeJLyHEpaQWqJFgpe5qqXAvGttLuHOTCNGrgY/VdiyArCIa60uIK6LElxDiUm5nKTldjlaI+AijxJfYyF8h5vT3lanUIiFX5fB4CCH2RYkvIcSl5Ki0VktPMQzQN8oPAg6TlQh5FMMwiOA41vdUYi50BqPDYyKE2A8lvoQQl3E7swhqvfVEw10sgFzkUuvzECfS1N8NXFa2NhhZ6vUlxMVQ4ksIcQlKrR5n7+dxakt1e0lVeEiF6Bxmva4vAOSouK0cSAhxDpT4EkJcwt1sbmN7JQIeGvjIHR4Pqd0C3MSc2t3LUaKISpsR4jIo8SWEuIQcpfWxvUBJ3V6xgO/weEjtJhHy4SMTWW1nYIETCTnVEBEhxB4o8SWEOL1CjR4ZHMpH8RhQ3V5iNy2D3Dm1y1JqkVdMQx4IcQWU+BJCnBrLsjgSlwWDle5eBkA9DykYLrOSCOEgyF2CRn4KTm1zVFoHR0MIsQdKfAkhTi1TqUW+2voYShZA0wA3xwdE6pQgdwmndol5KrAsl8E4hJCaRIkvIcSpZXJcIatNsAe8OYzJJMQWfnIR+BzqQacWaGgZY0JcACW+hBCnxjXx5ToLnxBbCPk8NPLlNtzhenoh9foS4uQo8SWEOK272UqkFlpPfEV8Hk1qIw7TKtgd7mLrC6IotQYotYZqiIgQUlmU+BJCnBLLsriaWsCpbWN/BafL0YRUBo9hEOzBbayvSkeJLyHOjBJfQohTyivWcUoiPKVCNKNJbcTBfOXchtKcvJcNncH6strOaM2aNYiIiIBEIkGnTp1w+vTpCtvqdDp88MEHaNCgASQSCaKjo7F7926zNkuWLEGHDh3g5uYGf39/jBw5ErGxsWWOdeLECfTt2xdyuRzu7u7o2bMniouLTbffunULI0aMgK+vL9zd3dG9e3ccOHDAfg+c1CmU+BJCnJJGzy15CPeUgkclzIiDhXhIIBVa/8hU6oyIc8FJblu2bMHMmTOxYMECnD9/HtHR0Rg4cCAyMjLKbf/+++/jq6++wqpVq3D9+nVMmTIFo0aNwoULF0xtDh06hGnTpuHkyZOIiYmBTqfDgAEDoFQ+fH5OnDiBQYMGYcCAATh9+jTOnDmD6dOng8d7+FwPGzYMer0e+/fvx7lz5xAdHY1hw4YhLS3NcU8IqbUo8SWEOB2DkcWllHxObT2kNLaXOB6PYdCjvi+nZbPjc1QOj8feli9fjsmTJ2PChAlo1qwZ1q9fD5lMhu+//77c9ps2bcJ7772HIUOGoH79+njttdcwZMgQLFu2zNRm9+7dGD9+PJo3b47o6Ghs2LABiYmJOHfunKnNjBkz8MYbb2DOnDlo3rw5GjdujOeeew5icUkPe1ZWFm7fvo05c+agVatWiIqKwieffAKVSoWrV6869kkhtRIlvoQQpxOfo0QOh5WwpEIe5zqrhFSVj0wEmcj6ctiuNs5Xq9Xi3Llz6Nevn2kbj8dDv379cOLEiXL30Wg0kEjMX3tSqRRHjx6t8H7y80u+zHp7ewMAMjIycOrUKfj7+6Nr164ICAhAr169zI7h4+ODxo0b48cff4RSqYRer8dXX30Ff39/tGvXrtKPmdRdlPgSQpzOnSxul4q7hvvQMAdSrdzFAqu9vhq9kXMZPmeQlZUFg8GAgIAAs+0BAQEVDicYOHAgli9fjtu3b8NoNCImJgbbtm1Dampque2NRiPeeustdOvWDS1atAAAxMXFAQAWLlyIyZMnY/fu3Wjbti2eeOIJ3L59GwDAMAz27t2LCxcuwM3NDRKJBMuXL8fu3bvh5eVlr6eA1CGU+BJCnE6hxnpvr7tYAH+q3UuqWQNfObhU6j0Snw1jLa7p+8UXXyAqKgpNmjSBSCTC9OnTMWHCBLOxuY+aNm0arl69il9//dW0zWgsGcf/6quvYsKECWjTpg1WrFiBxo0bm4ZYsCyLadOmwd/fH0eOHMHp06cxcuRIDB8+vMIkmxBLKPElhDgVpVYPLpPi5RwuOT/OllnrALBy5Uo0btwYUqkUoaGhmDFjBtRqtel2g8GAefPmITIyElKpFA0aNMDixYvNFjFYuHAhmjRpArlcDi8vL/Tr1w+nTp0yu58nn3wSYWFhkEgkCAoKwksvvYSUlBSbHx9xvBAPKQIU1r9wafRGJOcXW23nDHx9fcHn85Genm62PT09HYGBgeXu4+fnhx07dkCpVCIhIQE3b96EQqFA/fr1y7SdPn06du7ciQMHDqBevXqm7UFBQQCAZs2ambVv2rQpEhMTAQD79+/Hzp078euvv6Jbt25o27Yt1q5dC6lUio0bN1bpcZO6iRJfQojTYFkWh+9mcepRi/CW23RsW2etb968GXPmzMGCBQtw48YNfPfdd9iyZQvee+89U5ulS5di3bp1WL16NW7cuIGlS5fi008/xapVq0xtGjVqhNWrV+PKlSs4evQoIiIiMGDAAGRmZpra9OnTB7/99htiY2Pxxx9/4O7du3jmmWdsenykevAYBq1DPKy2YwDkqKxfuXAGIpEI7dq1w759+0zbjEYj9u3bhy5duljcVyKRICQkBHq9Hn/88QdGjBhhuo1lWUyfPh3bt2/H/v37ERkZabZvREQEgoODy5Q4u3XrFsLDwwEAKlXJRMHHe5J5PJ6px5gQW1hfioYQQqpJRpEGeWq91XbuYj5CPaU2HfvRWesAsH79evzzzz/4/vvvMWfOnDLtjx8/jm7dumHMmDEASj6kR48ebdZbe/z4cYwYMQJDhw41tfnll1/MepJL9380ju+++w6XL1/GE088AaBkZnup8PBwzJkzByNHjoROp4NQSFUrnI2Ib73PiEXJ1QtXMXPmTIwbNw7t27dHx44dsXLlSiiVStPr5eWXX0ZISAiWLFkCADh16hSSk5PRunVrJCcnY+HChTAajZg9e7bpmNOmTcPmzZvx559/ws3NzTRe2MPDA1KpFAzDYNasWViwYAGio6PRunVrbNy4ETdv3sTWrVsBAF26dIGXlxfGjRuH+fPnQyqV4ptvvkF8fLzpdUeILajHlxDiNNIKNZzKRXUJ97ZppbbKzFrv2rUrzp07Z0pi4+LisGvXLgwZMsSszb59+3Dr1i0AwKVLl3D06FEMHjy4wji+/vpreHh4IDo6utw2OTk5+Pnnn9G1a1dKep2UXMSHQmx9qE1CbrHLTHJ7/vnn8fnnn2P+/Plo3bo1Ll68iN27d5smvCUmJpqNqVWr1Xj//ffRrFkzjBo1CiEhITh69Cg8PT1NbdatW4f8/Hz07t0bQUFBpp8tW7aY2rz11luYO3cuZsyYgejoaOzbtw8xMTFo0KABgJJhGLt370ZRURH69u2L9u3b4+jRo/jzzz8rfA0RYgn1+BJCnIZWb+A0zEEosG18r6VZ6zdv3ix3nzFjxiArKwvdu3cHy7LQ6/WYMmWK2VCHOXPmoKCgAE2aNAGfz4fBYMBHH32EsWPHmh1r586deOGFF6BSqRAUFISYmBj4+vqatXn33XexevVqqFQqdO7cGTt37rTpMZLqwzAMmge441RiruV2AK6kFaBvQ7/qCayKpk+fjunTp5d728GDB81+79WrF65fv27xeCzHyX1z5swp96pLqfbt2+O///7jdCxCrKEeX0KIU1DpDEjIsz4ZSCzgVWpim60OHjyIjz/+GGvXrsX58+exbds2/PPPP1i8eLGpzW+//Yaff/4Zmzdvxvnz57Fx40Z8/vnnZSbd9OnTBxcvXsTx48cxaNAgPPfcc2XGFs+aNQsXLlzAnj17wOfz8fLLL3NOHEj1i/SWwU8hstiGBZBeqOG8CiEhxPGox5cQ4hSuphZAb7Ce6DXyU9hcu7cys9bnzZuHl156CZMmTQIAtGzZEkqlEq+88gr+97//gcfjYdasWZgzZw5eeOEFU5uEhAQsWbIE48aNMx1LLpejYcOGaNiwITp37oyoqCh89913mDt3rlmMvr6+aNSoEZo2bYrQ0FCcPHnS6uQiUjMYhoGXVITMIq3VtnqjEWLqZyLEKdArkRBS4/RGFvE5SqvDHNzEfDT1d7P5+JWZta5SqcrMJOfzS3qaS3tiK2pjbba50WiERlPx2M/S/S21ITVPwfHKQ66LVHcgpC6gHl9CSI3T6A0wWsl6GQABbhKbJrU9ytZZ68OHD8fy5cvRpk0bdOrUCXfu3MG8efMwfPhwUwI8fPhwfPTRRwgLC0Pz5s1x4cIFLF++HBMnTgQAKJVKfPTRR3jyyScRFBSErKwsrFmzBsnJyXj22WcBlMyOP3PmDLp37w4vLy/cvXsX8+bNQ4MGDai318lFeMtxMSXf6t/u8YQcjFQEQSSgviZCaholvoSQGsd1hStxFRKH559/HpmZmZg/fz7S0tLQunXrMrPWH+29ff/998EwDN5//30kJyfDz8/PlOiWWrVqFebNm4epU6ciIyMDwcHBePXVVzF//nwAJb2/N2/exMaNG5GVlQUfHx906NABR44cQfPmzQEAMpkM27Ztw4IFC6BUKhEUFIRBgwbh/fffh1hMK9M5M7GAh3b1PHEmKc9iO8ODKxqNK3G1ghBiX5T4EkJqFMuyOH4vx3o7AOFesirdly2z1gUCARYsWIAFCxZUeDw3NzesXLkSK1euLPd2iUSCbdu2WYypZcuW2L9/v8U2xHnV95FbTXwBIEupRWPHh2Ozixcv4sMPP4Sfnx/WrVtX0+EQ4nB03YUQUqPSizScVrgK95LCQ0J1bYlrMjhZhY7z589j5MiRaNOmDS5evIjhw4fXdEiEVAtKfAkhNep+XjGnRSva1/NyeCyE2IrHMPBXiKz+DacVaFCkqfmV3M6ePYvhw4ejXbt2uH79ummltEcXZiGkNqPElxBSo3QGI6dFKwhxVk393az+DRtYFpdT86slnvKcPn0aQ4cORYcOHXDr1i1s2rQJ169fx8svvwyBgEY9krqDEl9CSI1hWRb5auu9YBIBD0J+5ao5EOJowR5ShLhLrLZLzC2GzlC9i1mcPHkSgwcPRqdOnRAXF4eff/4Z169fx4svvkgJL6mTKPElhNSYu9lK5BZbH98b5asAY+OiFaXy8vKwZMkS/Pbbb5Xa31XpVEXQFyvNtumLlVBlJkOvVpm2sSwLTX421HmZZVaKMxr0tHocRwqxwOpwBxaAWmeojnBw/PhxDBw4EF26dEFiYiJ++eUXXL16FWPGjDGV4yOkLqKve4SQGsGyLG5mFFltJxfx0SRAYfPx8/LyTBUX1Go1vvzyy8qE6VCs0Qh1bsnSxRIvfzA8HnSqQqSejoEmPwtiL38Ed+gPvVqJhAO/I/vGWQCAX8uuCOrQDykndyPx4B/Q5GdD7OmH8L7PQiBR4N7ezSi8fwcA4BbaCPW6D0de3DWknYkBazQAIikwagFu//0tUo/+BWXaPQCA1C8E4X2fg05ViMQDW6EryoNAKkdoz1EI6tAfaWf3Iv3iEbBGA3yatkfkgLEQytyRdGQHirPTIHb3Qr1uT8I9rBG0RfnIvXMJYI3wqN8CEg/fGnmOqwvXUnu8Stah5uro0aNYtGgR9u7di+bNm2PLli145plnyiy0Qkhd5VKJ7+HDh/HZZ5/h3LlzSE1Nxfbt2zFy5EiL+xw8eBAzZ87EtWvXEBoaivfffx/jx4+vlngJIRXTGVgUcpjs468QQ2DDh3Zubi5WrFiBL774AlqtFlOmTMHs2bMRFBRUlXA5M+p1KEi8BdaohyK4AQRSOXJvX0TioW0lyaGHD+p1exKFyXcQt2sDirNTAQBS32C4hzdBxqUjYPU6MDw+WKMBl79dANZoKOl5ZUsuk2ddP4Ubv654cI8PVpHLSMKNX5eXiafw/m3c+GWZ2Tb2wcpwt3d8BUb/cHW44sxk3NyywqytvliJ+D2bEf/fTwDDM8VQnJWCpEPbAQAM72EP4p2/v4M8MByqzBSwBp3p9qAO/eEWGoX7x/6GJjcTYk9fhPV+GuF9n0Nh8l3kxJ4DGAZ+zbvAs37zSj33NSncS4bLqQVW2124n4/u9X3sfv+HDh3CokWLcODAAbRs2RK///47nnrqKUp4CXmMSyW+SqUS0dHRmDhxIp566imr7ePj4zF06FBMmTIFP//8M/bt24dJkyYhKCgIAwcOrIaICSEV4TJygUHJrHkucnJysGLFCnz55ZfQ6XSmhDcwMLBqgT7AGg0w6LTgiyRgGAaqzGQkHtiKotR7EEhlCOowAPlJtxD3zw/QFuYCAHhCMSTeAVClJ5oSWYbHx/0jf5Y5fnFWCoqzUszuDwCMem05wdgw/MAeQxUeJLumf/Ewvsf/DwDKtITHdjcg5dRu4NRu0zZ9mhI3tqzAzd9XgTXowPB4YAHcMC6DR2RzeDVoidQze6FTFUDqG4KIfs8jvO9zUKYloCDpFvgiCfxadIVQZvvVAEdQiAVo6CvHnSxlmdv46mLIkxPB1+mQK1cg3789PBTWxwRbw7IsDh48iEWLFuHQoUOIjo7GH3/8gZEjR1LCS0gFXCrxHTx4MAYPHsy5/fr16xEZGYlly0p6O5o2bYqjR49ixYoVlPgSUsOyVeUkdI9hAQS6WV69LDs7G8uXL8eqVaug1+sxdepUzJo1y7Qim63UuRnIuX0RAODdqA20Bbm4/dc3SDm1G6xBD7GHD9xDGyPz6vGSZI1lwTA8JB4su1CFUaeBKj2x5LE8SA4fTxLrNJY19QqX9kIDQH78NeTHXzP9rky9h2s/LcWNLSth1KpN23lCMSL6j4FbcH1kXD4K1qCDZ/0WCOv9NCRe/tX3OB5oGehmSnwlmelosP0XhO7/Fx53Y8EzPDzvBpkc6NQRGDcOeO45QCq16X5YlsX+/fuxaNEiHDlyBG3atMH27dvx5JNPUsJLiBUulfja6sSJE+jXr5/ZtoEDB+Ktt96qcB+NRgON5uGlv4KCkktXOp0OOp31STjEsUrPAZ0L58XlHBlZFifiMgGj5RnuUiEfAXJBucfKysrCihUrsG7dOhiNRkyZMgUzZ86Ev7+/1fsHAJ2qECkn/4UyLRECqRx+Lbri3v4tSD2z72HPJsNDSfrNAAwfEPChVhZBffMcIBCbSlixAMBzobdTgdj0rytNXTMY2YexAzCwwN09m0t+eTAMI/XyCdz861v4t+qO/Pjr0BblQ+Lpg9BeTyGszzNgeHxocjPAF0kg8a7cl6OKqLV68NQqNNuwFo1++R48fclQHoNIBLOvO6wRxpMngZMngfnzgWXLgBEjzI5V3uuIZVns27cPH374IY4fP462bdvijz/+wLBhw8AwDAwGAwwG+mJVXejzyLlwPQ8M66JTdhmGsTrGt1GjRpgwYQLmzp1r2rZr1y4MHToUKpUK0nK+ZS9cuBCLFi0qs33z5s2Qyaq2XCohpOry8/OxY8cO/PvvvwCAIUOGYMSIEfDw8KjhyAhxDJZlcfHiRfz666+IjY1FVFQUnn/+ebRr167S1U4IqW1UKhXGjBmD/Px8uLu7V9jOhbooqsfcuXMxc+ZM0+8FBQUIDQ3FgAEDLD6RpHrodDrExMSgf//+EApp+VpnxOUcxWYU4WpagdXext4NfOErFwEAMjIysHz5cqxfvx48Hg9vvPEG3nrrLfj6PqwWoC3MRdKRP5F2dj8M2mK4hTSEMj0BBUm3TWNsH52gVWcJxMCI94A/PwYemdxW5zBMyRhoHh94MASFJxQjrOdINBg6Hnlx12DUa+Ee1hjygDDLx0pPBwYMAO7dAwAYBELcefYl3H1qLFSBweZtWRaDCxMhX/0F8OAL3D6DAdKePdH1778BPh86nQ579uwBy7L45JNPcPr0aXTs2BF//fUXBg4cSAmvE6DPI+dSeoXemlqd+AYGBiI9Pd1sW3p6Otzd3cvt7QUAsVgMsbjsmEKhUEh/2E6Ezofzs3SOhCIBWJ71WqISkRDZ2dn47LPPsG7dOggEAsyYMQMzZsyAWFuAezE/4Mblo2CNLNxDGyLzyknoNSpTYqtMugWANdVXpVShhOkLh15jVtWBAKxeg4T/NiFhzyaziYG+zTuj5YT5KM5Mhl6thDwoAh5hjR/sxALjxwM3bgAAikLDceSzb5DXqGm598EAuN2gJTps3Qps3oxzEyZghE6H+Xv3oteaNWBnzsSuXbswe/Zs3L59G126dMHu3bsxYMAASnidEH0eOQeu56BWJ75dunTBrl27zLbFxMSgS5cuNRQRIbWI0QjExAA7dgBnzwJ37gA6HRAQACxfDnz6KfDii0B4uNluLMsiOV9d/jEfoS3Ixgf/W4avvvoKQgEfL/fvjCGRMniwNxG36QOknt0HBg8ni5XWojXnkiO5HsMAYM16qk2914/83/QvX1hSJYHPB9iS54cvksKgVQM8BgzDA/tgApRAKoehUAOGX/JRwBr04IkkMGrVD45nLJnAVzohr7wYSntNaxW2zJ9O1vVTOPDOUDx6g2f9Fmj1f4sg2rIVsn37SjaGhODsTzuQ51Zx3WIWwP38YnQI80Le0KF41tsbrdLT8TaAv+fOxQcbN+LslSto2rQpdu3ahUGDBlHCS4iduFTiW1RUhDt37ph+j4+Px8WLF+Ht7Y2wsDDMnTsXycnJ+PHHHwEAU6ZMwerVqzF79mxMnDgR+/fvx2+//YZ//vmnph4CIbXDtm3Au++WJLuPSy2pS4uPPgLmzQNGjQJWrgRCQ0tuLlAjvbDiXsbczDT8vWE99m/9ESI+gxef6Ijekgy4STLAZhiQD5hm/LtsusU8mHnPGs2STrGHL8QevihIvGlq6tO0PYI7DkT6pSPIvnkGDBj4tuiM+oPGwaAtRtLhHVDnpkPqE4TQXqPgHdUWqWf2IPvm2Qf7d0Bwp0HQFuTg/rG/oc7NgNDTH7EA+n2xFzlXjyPr2kmAZeHdpB2C2j+Bwvt3kXhoO4pzUiF290FojxEQuXvj3t5fkXHxMFijAb5NOyK48yCknt2HpEPbYdAWg+ELENShP/SqQmRcOWaWEAsVntAV5ZVJ1F1GOcl9Xvw1HH7vaTzx913TtmtPNIHK0wuw8tCMLAuWZTFx4kTkajSY88QT6LZvH87rdOiRlYXdu3ejuLgY/fr1o6SXEDtyqcltBw8eRJ8+fcpsHzduHDZs2IDx48fj3r17OHjwoNk+M2bMwPXr11GvXj3MmzfPpgUsCgoK4OHhYXWwNKkeOp0Ou3btwpAhQ+jSUk1QqYDJk4HNm8veFhkJSKXQ5eVh19q1GDJ6NITFxSW3ubsDX30FvPACjsRlITlfXSZpzclIxd8b1mH/ts0QiUR4MkKMYU28oRC6RnkmhscHyxpLEiSGV9IRajRCHhgOv1bdkXZ2LzR5mRAqPBHW+2lEDhiL/PhrDxPUJu0R0KYXGB4fyoz70ORlQuLlD5lfiN1jtffryKjXQacqgkAqB19YMia7ODsVWddPg2VZeEe1hjwgDBmXjyLp0DaoslIh9Q5ASNdhyL17EQn7fjMtryyQuUEglkKdm/Ggt9no1EmyX0oRuhy6DwDICJTjZN9waPtOha71UIuVPsQCHu7t3YK3Z85EREQE7t27h148HhYYjegtl0N//z52HTpE73VOjD6PnAvXfM2lEt+aQImvc6E3mhqkUgFDhgCHDj3c1rs3MH060L9/SXILQKfVYte//2LI9esQfvklkJYGAEgAIF3yMU4Peh6FrMh0iOz0VPz1wxoc2P4LxFIpBo+dhEGjnoPfD+Oq8cFxUNpLywAwsvBr2RWFyXegzkkHwxcguNMgNHxyEng8PjKuHAOr18OzYUv4NOngdD12zvY6MmjVKLx/F2AAt3pRYHg8pJ8/iPvHd0JbkAN5QBj8WnZD3J6fkBt73rQfTyAqWeCjBicsNruQgYY3cwAAZ7oFIzXMHUbvMBRP/NbiKi0XDu/FZ29NBMAiKCgI7du3R9CtW2BiYxEI4N09e7BHpXKac0TKcrbXUV3HNV9zqaEOhJAaNGXKw6TXzQ1Ytw4YM6bsh3vp7++8U7LPG28g4aef0AbAW3PfQzcjD4WDxiA7PRV//rAaB3dsgUQmw1OT38SAFyZAJleAyU2u1odWEnc5yRPDQ3CngQjpNgwZFw9DryqEPDAcYb2fNvXEGvVaMHyhWXLrVq9hdUbu8vgiSZllioM69ENQB/M67CFdBqMwOQ6FyXfAF4rh07QD8hNu4u4/3yP9wiGwRgPcwxrDqNehKPnuw55iHs9qzejK8sh9OF49x6+k5CUvJxGCs1uh7/BshfsVFuTBzcMTPlI+ZCIW8TcuI1lTEqM/AOOFC0Djxg6JmZC6jBJfQoh1f/8NbNpU8n+FAti3D+jQweIu59e+i6yLh6A1arFIKoBHsR6vA0j58gt8cvoCDvyzDVK5HE+98hYGPD8eMoVbyY5GIwRXdls8dpUxDIQydxi0ahh1JeONfZp2QOOnp0LuH4qcWxcAhoF3o7aQPljkIKhd33IPxROIyt1OHMMtpD7cQuqbfvdp3BY+jdui9OIlwzBgjUZkXjmOpCN/Qp2XCZlvEOQB4bj997cwqJUl46pZ1i7DJyTFJYtU6AU8aKQPP1KZ4oKSEmkVVC/pOewZ9Bz2DCQbp0CQdQ8sy8InqxjdkkpuL7h5mRJfQhyAEl9CiGUsC8yZ8/D3VavKJL25dy4j5dR/0KuV0KiUQFh3pF84BGhV+OFcOq5p9PjBXYg5BTr8kJ4K2Z6/8Oxrb6P/c+MglSvM70+ZC+El+0xALe3x84hohuLcDOiU+ZB6ByD8iecR2W80GL4AmvwsCKRyiBSepv1CugTZ5f5J9Xm0x53h8eAf3R3+0d3N2tQfMg4pp/5DUfId8MUy+DRpj1vb1yLr2qkq33/ZMYPch7eUt5x12rn9wIhncfHr9xE9bq7Z3ychpPIo8SWEWHb4MHD9esn/u3QBxo2DtigfmrxM8AQiXN6wGJmXj4J50LNl5AmAsO5gjQacTCrE37dy0dhXgvHZangB+BDAi36BODR+atlhEiwLfvxpMJoim8MsTXL9WvWAKiMRBq0aHuFNETlgDPxada9wnK0jJo8R5yQQSxHWc6TZNt9mHVGYfBc5secAhoFXVGskHvgD92J+KRk/bIVaIoBbgRZCvRHiYr2p15d//zJ01mpVG42ARmX6VV748P5Kj5NyOgYZ5/aCL5aCLxQjsN0TiBwwBoqgCG4PmhBihhJfQohlf/1l+q967PO48uUMpJ2JAfvYmElTb9WDmex3s1X4/HjJWN3EPA26hnlgJOuNgMR43E6Mh1tCHAojGuCxgwBCidWQSioolEwwU2XcB8sa4dusEyIHjIFHeJMqPFhSF7mFNIBbyMO/xRYvzUHjp6Yi6/opGHVauIU3QdqZvbj919cwqFVm++Z7S+CXUbLNO6sYqaElQ3Z4ydfAy7gDo1/9hxMjH8cA2iGzIP1lpml/03E9H7wOWCMMao3pfu/FbEbCvl/RYNj/QezhA7GHDwLa9IZAXP6iTIQQc5T4EkIqpFMWQB+zC6UfqYcPfwO1gOU0g/5AXC70D5oV61kcScjHEeQDKJm8s/3G5XISXxZMUbbZJtNwhfrNoc5OB8Pjw791D9Qf+BLcwxpV8RESUj6h3B1BHfqbfncPaYD6g15C1rWT0BUXQR4YjoxLR5CTvgx4UNUh7G6eKfFlAIh2fQb1uPUV3wnDg7FeSxj86kOUchshCYUAAL2AQZ532RVEgZIvmKzRgNs7Hh5XIJGj6QszEDlgbBUfNSG1HyW+hBAzOlUhdKpCFCTE4tzqt9HnbskiFRoxH2q+gfOqEZM6hGBCtM+Duv8s9PVawtv/CXSfMxUCADeSE8vuxBdAeG0PRO7e0BbmliS5rbqjwbAJ8G3a0V4PkZBKEUhkCHxkkqN3w2jo+o+FvlFjCNIzEZCqRBPfaNzMulQy9EfmYbGkGQCANcIY0hyN95yE4ME3xfsRHjAIrC/pXUqvVuLKhg9x47cvwBMI4dWgFSIHvgj/Vt0q9TgJqc0o8SWEAABy715B7B+rkXHxCB7NbnnGkv8b+LbXohXwSvdhoO/3GgR3U0y9x4z+sRn1LAvRnaOIHvYiIvqNfrAQBON0NXAJeZTQ3QtYsAiYOhUA0OjPEwje8Rvu3zmFXKMY96wegYH/rXg0iC3pNTbwGNxt7FWpWPSqkh7jjEtHkH7hIEJ7jkJA294QyT3g3bgteAKqNUsIJb6E1FElJZ+OIffuZagyU5B05M8H89DNu3R1Ij4kagPEagMYIwuWZ3siavQMgTGwMWQnLzw8bmn5slIMEN1nGCL9HmynhJe4ildfBX77DTh4EEhMhGL0ODTZvh26Ro2RdDUVBmPFl0lC9/6Dzhu3g3nQJLalL5Tu5Q9z4Kp0vH3S4e1IOrwdACBy90aTZ99AxBPPV+nYhLg6SnwJqYPyE27izIo3oMpIMlsOtryP53xPMdwKtOAbWbjnaZDvbX3y2eNYRUkPlvf1S6ZtuU1amLVhwEBrIUEgxGnxeMBPPwHdugEJCUBsLNCmDYSzZqHpqLG4yijK7OJ1/TKabViLsL0PS/el1lPgThNvh4SoLcjB5e8W4t6+LVAEhMOzYSuE9RwJkVvlepcJcVWU+BJSBxj1WiSf3I3Eg9ugyryP4uw00wQ1a0X8c/2kqJdYcgm13r18zomvyN0bHsERYBgGsqZdcVOjNn3IG4Qi5DyW+LIAZEJ6SyIuKiSkZGXDwYOBGzcAjQb48EO0+OQThDRqhtxGzaCXyiDJyYL39ctwS7pntnvhqKeR0j0EOBeDBwPjHaLg3g0U3LuJlNP/4eZvX6D9GysQ2K6Pw+6PEGdDnzKE1GI6ZQHU+Tk4v3Y28uOulL8srxXJ4e5odiETfCOLsLh83G3iDbWs4rGCAqkcegA9P/wdck8fAEBirgpRHy6FOC8XAJDUbyj0jw11EPAY1PO0vTeZEKcRHg6cOwfMnw+sWAEYDGD0enhfvwzv65fL3UXj6YXzsxZB+OJYtA/zRtOsFGRdPQm9QY8rD8pZP3pVxj5YgAWMOg1OL5sK8PiQevkj/InnEDlgLIQyN+uHIMRFUeJLSC2UfuEQbu34Crm3L5jfYGPSCwBasQBJkR6IuJsHoc6I1qfScLJXPUAgeNAzxSJy4Eto8vQ0GHQaMGI5du+JgUjuDgAwsixuHz6NXms/NR0zdszEMvfTOtgdAl4F9U4JcRVSKfDZZ8AbbwBffQXj1j/A3IoF80gvrkEkRk7Tlogf/izuDR4Jo1SGqAd/+zLfYIT1fgo6nQ5Xdu1C9wU/4f6B35Fz+yJYgx5FqfdMrzu7MRpQnJ2Km7+vQuLBbWg5YT5kvkFQBNenyaWk1qHEl5BaQpOfjdw7l5Fx+SjuxWyuuGh+JdyI9kNgciEkagP805ToeptF5psvQejth5AuQyD1CQQACAHodDqzfXNOn0eXyS9AoFYDAGJfmICc5q3L3IeHVGS3eAmpcaGhwIcfglm8GLvP3gVz5w54Oh10cjkKQyPBCs2vmkgF5b9e3cMaI3rSItPv2TfP4eqmJciPv2b/mFkjVBlJOLV0MgBAHhSJps++geDOg+x/X4TUEEp8CXFxOlURrmz8EMnHdppfDq1E726F9yHm40LnYHQ6fB88Iwvf87fg++kmYM0awDug/J1UKmD9engvWACeRgMAyGnSApden1Nuc7XOnpdyCXEODMOgUf0gnBZYHsZzLb0AUX4KCPmWv7D6NGmHXh9tRWHyXRTnpEGTm4XLGxbDoCm262seAJSp93D2yxkIObcPfi27wa9FF0grer0T4iIo8SXEBbFGI7Kun0LO7YtI2P871Dlp9p0Qw+OXrKLGMGg25h1EDnwRDMOA+etv4IUXSibuXLsG9O4NtGwJDBxY8q9MBqSllfR2NWoEZGSg9GM8p0lLHFyzCQaprNy7lAi5F+wnxJXU95bhSko+ivUVJ6Z6I3AvV4Uo37IVIMrz6DLL/q17IPHgH0g7tw/aonwo0xLtNByiZP/kYzuRfGwnwPBQr9swtPq/hbREMnFZlPgS4mLyE2NxdsUbUKYnltS6tfMMcI/I5vBqGA25fyjqdR8OsYfPwxtHjgROnwbGjwcuPBg/fOVKyU8pqRT45RegsKQSBMswiB07CZdfmwWDtPwPS5mIDz85DXUgtZelpLdUeqGGc+L7KLG7N6KenIyoJ0uGKGTfOIOLX79f8h5hT6wR94/9jezYc6jXdRj8WnWFT5MONA6YuBRKfAlxAXpNMVJO7kbWjdNIPv4PWMODYQF2THolXgFoOGwiIge9ZPmDrFUr4NQpYMuWkqEOJ0+W304qBTt6NPYPfgEZDZpavO92IZ704UmInfg07YC+y3cjJ/YclOlJyIk9h8SDf9inOgTLojgzGbf/+ga3//wK7mFN0PGdNZD5BtsneEIcjBJfQpxc5pXjOPPFWyXLkdqrh/fBcdxCG6HlhPkQKzygCI4Ew+M43EAoBF58seQnPb2khNPt24BOB3h6lrRJSECKgY+MuGyrh3OX0FsRqb0YhoGPTIQcldbi4AM3sf1eBwzDwKdJe/g0aY+wXqMQ3GUw7u78HplXT9jnPeTBeOKCpFs4MPtJBHcehMA2vRHQtjd4fHo9E+dFf52EOCG9Won7x/5B+sVDSD9/8OGkFTt8YIncvSH3r4ew3k+jXvcnwRdVsXZuQAAwZMjD33U6YNcuQCyGMk/D6RBKrQHukoprAxPi6pr4K3DsXo7FNnHZRWge6OaQsn7+LbvBv2U3sEYjdMVFOPvFW8i6eqLqvcCsEQa1EkmHtiPp4B+Q+Yei85xvoAgMt1/whNgRJb6EOJmsG6dxetn0kh5eMKjyBBWGB7As+GIJ2k79FEEd+tkjTE7EFZRoqmw7QlxVqKcUbmIBCjX6Ctuo9SwSc4tR30fusDgYHg8iuTu6zPkWmVdP4P7RP1GYEo/8uGuo0nvNgy/nqsz7ODRnJII7D0Zw50Hwb9UdDNXnJk6EEl9CnIBRr0Pauf1IObkbKWf2AMbSD6AqfBAxPIgUHghs3w+ekc1Qr9twCKSO+0AtD5eEViHiw0tKvb2kdmMYBiqt9Z7V5Hy1QxNfUzw8HvxbdYN/q24AgPQLB3Fh/XvQFuZWbUgVy8KgVSPpyA4kHd4O9/Am6Pzu15B4+tkxekIqjxJfQmpYUVoCTi6ZBFXmfTtWaWAQ2L4vWk9eDJHC0w7Hsx3LsjiTlGe1XWua2EbqCCOH17bRzrV4uQpo0xsD1hxE2vmDKLh3E/f2/QptUX7lawM/eKwFibE4MGs4wvo8jdCeI+FeL8p+QRNSCZT4ElJDCpPvIunwDsTv2QyDtrhkYxWTXt/mnRHaaxR8GreDzC/EDlFWXpZKhyILl3VLecuot5fUDZ5SIXKLdRbb1ORYd55AhOCOAxDccQAiB47F5Q2LkXo6pmoLY7AsdMp83P1nA+7u/B5hvZ5Gq0kLaQIcqTH0l0dINTPqdbj0zXwkHdnxYPxt1Xt4xB4+aDhsEuoPGec0vacFVj7gTe3UeshF9FZEar/GfgqcTMy12Ca9UAPWzrW5K0Ps4YMOb66EOjcDefHXcGvbOuTFXbG+Y0UevM8lHvoDBUmxiBz0EoI7DgRfJLZTxIRwQ582hFQTo0GPjIuHcWv7+ocfIJVNeh8kzBH9xyC8zzNwC41yuh4UAY9bAs61HSGuLsJbhitpBVBaGOubW6xDeqEGPlLnWMlQ4uWPQC9/+Lfqhtt/fYO43T9BV5RXpWPmxV3FhbXv4urGj9DujeXwb9nNPsESwoFzfVISUktlx57HuS9nQJ2bYZfjeYQ3RtSIVxHcaaBdjucI3nLrl2zFAh58aMU2UodYm+DGAEjIU8FH6lY9AXHEE4jQ+KlpiHryFSjTE3F10yfIvHwUVak8o1MV4tTSVxE1cgoi+482XyWSEAehxJcQBzJo1Ug8tA1Xf/wErMH6eNcKPejhrT90AqKGT4LY3dt+QTrI1dQCq21aBLqD5yRDMwhxNCNrPUVkAegMNT/UoSI8gRBuIQ3QefZ6xP/3M+J2byqZmFsZLAuWNeDWtjW4vWM9IvqPRvOxs8ET0Lh/4jiU+BLiACzL4u6uDbi1bS30xUVVPp5n/RZoOPz/ENxxgB2iqx7JBRrAykpwQW40vo/UHXweA4mAB7Xe8hAnhcg5hjlYwvD4qD/4ZUQOegmavCycWfk6cu9crvQEXdZoQPx/P0OZloDWUz6GxMPXzhETUoISX0LszKjX4upPn+Lenp+rfKyAtn3QbvpnEEiqt/5udckp1sGNVmwjdUiUnwJXrFwNMTpvh28ZDMNA4uWHrv/biLjdPyJ+z89Q56RX8mgsMi4dwZ6pPRHcaRBajvsfDX8gdkeJLyF2YtTrcPvPrxG3+0folNYv81siDwhD/cEvI6LfC2Cs9Jq6MhrkQOqaxn4K3EwvhM5CdnsrswhR3lVcSrya8UViRD05GQ2HT0Jh0m0c+3Ac9KrCyi2HzLJIPb0HeXFX0P2DXyFxp+SX2A8lvoTYAWs04MyKN5B+8VClL/UxPD6ECk90ff8HuIU0dJqyZI7CAPBT0FAHUvdYSnqBknG+iXnF1ROMnTEMA/ewRui9ZBtu7fgKSYd3wKjT2Hwc1miAKuM+Yqb1RnifZxA14lVIfQIdEDGpa2gBbUKqwKjXIeHA79j71kCkXzhY+aRXIEJYn2fQ66OtcK8XVeuTXgAI95JBKqy9vdmElEdjZXwvUPKlUKWrRE+pE5H6BCH6/xZiyPdn0fjp6SUbK/G+xhr0SNj/Ow7972ko05PsHCWpi6jHl5BKMui0OP35a8i8crxKx6k/eByavjATfGHtKOvFtfh+I7/aOW6ZEEtEfG79TRKO7Zwdjy9A46enQRFSH7e2r0dh0i2bj8EaDdAW5ODQe0+h6QszENp9BARSev8glVM7XlmEVLP8hJs4vvjlKiW9Mr96iJ68GM1ffLfWJL0AUKS1XraNAZBepHV8MIQ4GZGAh2B3icXx7SwAb1nteU8AgJDOg9H7kx3osXgLhHL3khKNNtIXF+HKD4txYM4IqDKTHRAlqQso8SXEBqzRiEvfL8KhuaOQe+eS7QdgeOAJRGj/1pd4YsV/CO/zTK0b1qDnOCXd6EpT1wmxo5ZB7lbr+V5Ny6+WWKoTwzDwatAKPT/cioDWPSp9nOKsFBxZMBoF9+/YMTpSV1DiSwhHrNGAi9/OR8LeXyt9DPfQRui24CcEd+wPhlc7X34KkfURVCwATymVMSN1k1hg/bWfU1yFBW+cnDwgFJ1mrUe/L/fDI7I5bK7vwrLQ5GXi4OzhOL3iDejVKofESWqn2vnJS4idpZ07gJg3nkDSwT9s35nhQeTuje4LfkbvT7bDq0FL+wfoRLj05Ir5DII9XKtcEyH2klusq+kQnILMNwjd5v2IkG7DKjXxDQDSzu7Dqc+ncp5bQAglvoRYkX7hEE4vm1rpouzuoY3Qc/Fv8G7c1s6ROafb2UqrbZrTUsWkDuPT376JQCJDu2mfov+X++DboqvtB2CNyL5+CvtmDkTqmb32D5DUOpT4ElIBvVqJ2O3rcHrZNNt3ZhiIPXzRdd6P6LVkG2R+IfYP0Endy7F82ZEB9XiRus1XLgKfR8nvo6Q+Qeg8ez1Ce4ys1P6q9CScWfE6Eg5stW9gpNahxJeQcuhUhTi6cCxit66q1MpDcv9Q9Pzwd/g27VDrJq9ZY61OKQug2MVrlBJSFUI+D439FDUdhtPhCYRo89oS9F76J7yi2lTqGJe+nY/4mF9h0FHVGFI+l0t816xZg4iICEgkEnTq1AmnT5+usO2GDRvAMIzZj0RC4wqJZfpiJU59Pg0FibdsXpBCIJGj9WufoPfSv+rsKkMSKxN3GAAyWriC1HGBbtxWLayLY1fdQxuh27wNCGjT2/adWRZXfliEowtGQ1tU+ypjkKpzqcR3y5YtmDlzJhYsWIDz588jOjoaAwcOREZGRoX7uLu7IzU11fSTkJBQjRETV5Nx6Sj+m9oTOTfPAFYLDj2C4UEod0f3D35BWI8R4Ivq7lK8nlLLVR1YAPV9qPg8qdtSCzWcahmoOaz0VhvxBCJ0fHs12r2xHBLvAJv3z0+4gdPLp9XJLw7EMpdKfJcvX47JkydjwoQJaNasGdavXw+ZTIbvv/++wn0YhkFgYKDpJyDA9hcQqRvyk27h5OevwaCxvTROxBPPo9fH2+BeL8oBkbkOpVaPtELLlxi9pAL4ymtXcX5CbGU0spyqeBnrcOLG8PglC18s2Q5ZQJhtJSBZFjk3z2HvW/2Re+ey44IkLsdllizWarU4d+4c5s6da9rG4/HQr18/nDhxosL9ioqKEB4eDqPRiLZt2+Ljjz9G8+bNK2yv0Wig0WhMvxcUFAAAdDoddDqakFPTSs+Bvc9F8olduPbzUrAMHxDYdhk+etIihHQZ4pC4XM3tjAKgdEx0BWOjDXpAr6+9NUpdgaNeR4Q7DxEPrMHCWPcHrx8hjHX+PDESBbrM+wm3dqxD4qHtNg1BU+Vm4+gnr6D7vI1QBNe3a1z0OnIuXM8Dw7rIdYCUlBSEhITg+PHj6NKli2n77NmzcejQIZw6darMPidOnMDt27fRqlUr5Ofn4/PPP8fhw4dx7do11KtXr9z7WbhwIRYtWlRm++bNmyGTyez3gAghhBBCiF2oVCqMGTMG+fn5cHd3r7Cdy/T4VkaXLl3MkuSuXbuiadOm+Oqrr7B48eJy95k7dy5mzpxp+r2goAChoaEYMGCAxSeSVA+dToeYmBj0798fQmHVV/7KvHYSZ5a/bttODA+eEU3Q5b3vwfBoktajTiTkIDlXCVnKFaiCWwLlPD88BniqZXANREdK2ft1RCrnYkoe7mRVMLTKaIAs5QqadeyBCF+36g3MyaVfOIRL3y+EXlVk244MD21fW4LAdn3tEge9jpxL6RV6a1wm8fX19QWfz0d6uvkiAunp6QgM5DZ7XigUok2bNrhzp+L1vcViMcTishOThEIh/WE7kaqeD5ZlcfP3L3B7x1e2LpYJ70Zt0WnWOgjFVCHkcfW85EjOV5f8wuOXm/iGeErpteQk6H2tZmUXG8t9jTwqsUCDqCDvaorINdTr2A9BrXvgxJKJyLl1waahDxfXvIN+X+yFtBIT5ipCryPnwPUcuMzkNpFIhHbt2mHfvn2mbUajEfv27TPr1bXEYDDgypUrCAoKclSYxEUkHd6O2zu+snm/6Fc+RLf5myCUU+9/efKKrY/dbepPvVeEANzqWRdrqeZ1efgiMTrNWg+PyIrn7JSHNeixb8YgpJ0/4KDIiLNzmcQXAGbOnIlvvvkGGzduxI0bN/Daa69BqVRiwoQJAICXX37ZbPLbBx98gD179iAuLg7nz5/Hiy++iISEBEyaNKmmHgJxAveP7cSlbxfYvF+zMbMQ3vtp22YW1yFagxF3sixfeuQxgJvEZS40EeJQUg71rKUiGk5VEaHMDd3n/4Smo9+2aT+jTo0zy18v6S0mdY5LfQI9//zzyMzMxPz585GWlobWrVtj9+7dphJliYmJ4D2SlOTm5mLy5MlIS0uDl5cX2rVrh+PHj6NZs2Y19RBIDbu37zdc/s62pFco90CbKR/bbVxYbZVRqIHByhVHI1vSrp6ntHqCIsSJNfCV42xSnsU2gQoaUmUJXyRG1PBJ0BcX2XQVjzUacHbV2+g+f1OdWlKeuFjiCwDTp0/H9OnTy73t4MGDZr+vWLECK1asqIaoiCtQZabgyobyJzVWhOEL0eW97+Bp4+W0uohrvVGDaxSSIcThIr1luJScD52x4tfEvVwlmgV71rmlz23V5Nk3IXb3wbWfPwNr4FbWSp2dioNzR6H7/J/gHtbIwRESZ0HXbEmdkHP7IvbPGgLWwL1+LF+qQOd3v6KklyNPKbeJBV4c2xFS2xmMrMWkFwAKNAZkqywvCkNKFquqP+gldJy11qb99KpCnF7xOq3wVodQ4ktqPW1hLk4smQSjVmO98QMCqRwDVh+EXwtuEycJIBMJIOBZ7pXylQnhLqHElxAAyC3m1jOZo6IFErgKaNUdrf5vETgti/eAKj0RJ5b8H/SaYscFRpwGJb6kVjPqtTj75dswqJWc9+EJJej87jcQSuUOjKz2ictWQm+l96qBr6KaoiHE+fE5Dl+w8n2SPCbiiefQ86OtgA3DQ7KunsS5VbZNkiOuiRJfUmsZDXqcXjYdWdcqXtL6cWJPP/T59E94N2rjwMhqp7tWKjowAFIL1NUTDCEuwFsmgpBDVhvoRhPcbOUZ2QytJsy3YQ8W6ecPIOXUfw6LiTgHSnxJrXX/2E5kXDrCuT3D46H968sgDwhzYFS1l9JKvVEWQJGW+xhrQmo7Po9BIz/rV0Fo/GnlRPR7Ae1eXwYw3FOds1/ORMalow6MitQ0SnxJrZR79woufTOPc3tGIETHd9bBp2kHB0ZVu4kF1t9OJAKqSUrIo9w51LWOzbRxaV5iEtJlCJo89yb3HVgjzqx4HdqifMcFRWoUJb6k1lHnZuDExxNtquDQ/s2VCGjd04FR1X5cavNGesuqIRJCXEdSnvUJVQm5qmqIpPaKGj4J4U88z7m9QavGhXVzqKe9lqLEl9Q61zd/Dn0x9x6SBsMmIogWp6iybKXlkktiPo8WriDkMTprq74AVieNEssYHg/R/7cQId2fBNdqD+kXDuL6L587NjBSIyjxJbVKwv7fcP/Y35zbR/QbjeZjZjkworohv1iHTCuJr95ohIE+wAkx4yEVWk3FFGKXW2vKKbV4cQ6kvsGc29/d+T2UGfcdGBGpCZT4klpDlZmMS98u5Nxe5lcPzcZQ+Rp7yFBar5FsYIEcKsRPiJkGPnJY+zoYRFUd7ELs7oUei3+FyMOH8z4nP5kMgw014Inzo8SX1BqXvl0AWP0IKSGQuaPb/B8hkFCtXrugjlxCKsVTKoRCZHnSZ2Kuisab2onEwxdtXv2Yc3tl2j1c2fiRAyMi1Y0SX1IrxO3ehMwrxzi37zhzNaQ+QQ6MqG7xV4ittuEzgJdMVA3REOI6VDoDiqyUAizWG5FWSL2O9hLQuieaPD+Dc/vEg3+gOCfVgRGR6kSJL3F5erUS139dxrl9/SHj4duMypbZk1zMB9/Ku0mEtwwia40IqWMK1dyWI87n2I5w02jEK/Bv3YtbY9aIE0tegVFPQ7VqA/oUIi7v6o8fw8hxDJZXw2g0HzvbwRHVPfE5KhiMlttQby8hZQk4fhkU8ujj2t5avPQueCLrV6sAoCj5Du7F/OrgiEh1oFcScWmZ104i8eA2bo0ZBi3HzwNjw/rthJv4bKXVNgk5VIuUkMd5SYWQCi1/FDMAgj1ogpu9KYIi0eGtLzm3v7ltDVijlW/4xOnZlPgWFxfj6NGjuH79epnb1Go1fvzxR7sFRggXsVtXcW7b4qU58Kzf3IHR1F3FOusfBsU6y+MYCamLeAyDxn5uNR1GnRXQuif82/Tm1FavLMC1n5c6NB7ieJwT31u3bqFp06bo2bMnWrZsiV69eiE19eFg7/z8fEyYMMEhQRJSnpxbF5ETe55TW4+IZqg/6GUHR1R3yazMSmcAyEVUi5SQ8uisjBNiAdzlcFWFVE7rSYvAF3NbXCfu300ozkl3cETEkTgnvu+++y5atGiBjIwMxMbGws3NDd26dUNiYqIj4yOkXKzRiPNr3uHYmkHL8e87NJ66LsLL8lLELID6PlQ6jpDycFm2OCnXehtSORIvf7SaMJ9jaxY3f1vpyHCIg3FOfI8fP44lS5bA19cXDRs2xN9//42BAweiR48eiIuLc2SMhJSRcfkYVJnJnNqG93se3o3aODiiuq3AyoxzPgOEetIYRULKw2VJYj3V8XWokG7DIPOrx6lt0pE/UZh818EREUfhnPgWFxdDIHh4qZJhGKxbtw7Dhw9Hr169cOvWLYcESEh5bm5ZzqkdwxegyTOvOziauk1vMOKulYlrJau2UTkmQsrjLbO8bDEDwFsqrK5w6iQeX4CO76zh1phlcfffjY4NiDgM58S3SZMmOHv2bJntq1evxogRI/Dkk0/aNTBCLOG6fnqT596E2N3bwdHUbflqPQxWeqwYAJlKqoFJSHmi/BQWFz9kAYRZGU5Eqs49tBEC2/fj1Dbp0A7oNTT8xBVxTnxHjRqFX375pdzbVq9ejdGjR9OSisSpiNy80XAoTbh0NC7V4VjAYo8WIXWZt9Ryjy8AJOdTklUdmo2eCTDWUyPWoMPdf36ohoiIvXFOfOfOnYtdu3ZVePvatWthpPp2xMGU6Umc2zZ+ZjoYnuVqA6TqPCRCWClDCgAIdONWKJ6QuiYpX22xxxcAEnJVVqs/kKpTBEUiuPMgTm0T9m1xcDTEEWgBC+JS7u3l9kYjlLkjot8LDo6GAACfx8BDanlVNk+pgFZuI6QChWq91SsnRhZQUS3satFo1BRO7fRqWpTHFVHiS1xK8vG/ObVr+OQkWqGtmhTrDMi2Mn6XT+eCkAoJ+QysdvmCli2uLu71ouDboktNh0EchF5FxGVkXDnG6Rs2IxAiot/oaoiIAEBirsrqZ3a2SgeVlnqrCClPmKfU6mvIWya0ulAMsZ/GT03j3Fadm+HASIi9UeJLXEbc7k2c2gV3HgShTOHgaEgpjd7IaYKbRk+JLyHlcZMI4SmxvLKhkE8f19XJu3FbSLwDObVNPRPj4GiIPdEribgElmWReeU4p7YNh1Alh+okE/HBpaCLVEi9VYSUx2BkUaTVW2yTUaihMb7ViGEY1B/8Eqe2ycf/cXA0xJ4qlfhu2rQJ3bp1Q3BwMBISEgAAK1euxJ9//mnX4AgplXX9FFi99QUQpD5B8IhoWg0RkVJhXjKrpZhCPCSQUOJLSLmyVVrorRRsYAGkFairJR5SIqzXU5zqNRYk3YY6L7MaIiL2YHPiu27dOsycORNDhgxBXl4eDIaSb6Cenp5YuXKlveMjBACQsO83Tu3Cn3jewZGQx3FZbjXIjZYrJqQi1haAsbUdsQ+RwhPeUdyWu8+8esLB0RB7sTnxXbVqFb755hv873//A5//sAenffv2uHLlil2DI6RU1vVTnNqF93nGwZGQx93NUlptk5RHxfcJqYgHx+WIvWS0bHF1C+31FKd2yScqXueAOBebE9/4+Hi0aVP2G5BYLIZSaf0DkBBbFWenQVuQY7WdyMMXYg+faoiIPCpLqbE6Iz1LqamWWAhxRTIhH8Hulq+KSIU8+FAt7GoX0nUIwKGMXPY1bp0zpObZnPhGRkbi4sWLZbbv3r0bTZvS2Epif1xnzIZ04bbaDrEvTiV6qY4vIRZJBZY/jot1RmisDQQmdicQS+EWXN9qO4NWDW1RnuMDIlVmc+I7c+ZMTJs2DVu2bAHLsjh9+jQ++ugjzJ07F7Nnz3ZEjKSOy7l1nlO7gDZ9HBwJKU8gh/G7QbRcMSEVMrIsEjgMB7qXSyuF1QSuSxjfP8ptgSVSsywXDizHpEmTIJVK8f7770OlUmHMmDEIDg7GF198gRdeoCViif3lxV3j0IqBRzhdcagJoR5SXEjOt9gmypfqKhNSEY3eaHWSKIOSpY1J9Qto2xexW1dbbZd7+xIwiFsJNFJzbEp89Xo9Nm/ejIEDB2Ls2LFQqVQoKiqCv7+/o+IjdZxerYQqI8lqO5lfCMTuXtUQEXnc/XzrPVVUf5SQigl43IYCCfg0ZKgmyP3rcWqXn3jTwZEQe7BpqINAIMCUKVOgVpfUEpTJZJT0Eocy6LSc2nnWb+HgSEhF4nKsX36Nz6GJr4RURMjnWR0OxKKkZjapfkKZG6R+IVbbFaXeg0FLtZadnc1jfDt27IgLFy44IhZCysi5eY5TO++m7RwcCamIhkNvbrGOJuUQYom1pJbHAJ4SKmdWU9zrRVlvZDRApyp0fDCkSmwe4zt16lS8/fbbuH//Ptq1awe5XG52e6tWrewWHCH5CdwuHXlGUI9vTZGJBCjWV9wzzwBQiGjVNkIsSSu03FNoZIHEPBUiveUW2xHH8KzfHOkXDlptpy8uAjz9HB8QqTSbE9/SCWxvvPGGaRvDMGBZFgzDmFZyI8QeirOSObUTKTwcHAmpSANfObITK0582QdtCCEVu59n/RJ5cr6aEt8a4hHRnFO7zKsnoAiKdHA0pCpsTnzj4+MdEQch5SrOTrXahhEIIQ8Mr4ZoSHkkVuqPAoCXlArvE2KJgbW+HDEtWVxzhHJ3Tu10RQUOjoRUlc2Jb3g4JRik+qhzM622YfgCMBxW1iGOcTtLCQawuHpbfI4SLYOoV56QinhKBMizUq7Mk+PSxsT+FBwWsQAAdZ71zyxSs2xOfH/88UeLt7/88suVDoaLNWvW4LPPPkNaWhqio6OxatUqdOzYscL2v//+O+bNm4d79+4hKioKS5cuxZAhQxwaI7EfLjNkhVK3aoiEVCSzyPqSxRlF3KpzEFJX1feV4/x9y/WwG/jQMIeaIpRz+5zRFOQ4OBJSVTYnvm+++abZ7zqdDiqVCiKRCDKZzKGJ75YtWzBz5kysX78enTp1wsqVKzFw4EDExsaWW1bt+PHjGD16NJYsWYJhw4Zh8+bNGDlyJM6fP48WLWgylCvgMkOW6xsScQxOKxY7PApCXFuO0vqXwxyVFgqxzR/bxA4Yjsuuq3PSHBwJqSqbrw/n5uaa/RQVFSE2Nhbdu3fHL7/84ogYTZYvX47JkydjwoQJaNasGdavXw+ZTIbvv/++3PZffPEFBg0ahFmzZqFp06ZYvHgx2rZti9Wrra/AQpyDkUMdX57I+pK5xHECOCxHHEhLFhNiURKHJYuvptH40ZrC8PgAh+RXlZVSDdGQqrDLV8eoqCh88sknePHFF3HzpmNWLtFqtTh37hzmzp1r2sbj8dCvXz+cOHGi3H1OnDiBmTNnmm0bOHAgduzYUeH9aDQaaDQa0+8FBSVvNDqdDjqdrgqPgFQGI1XAbM6HQGz6t3QzwxfRualBER5i3M99ZIEKo8H8XwChbkI6R06k9FzQOXEeZSoilfM6UqmNdM5qEMt/bJJuOZ9Hej3lCjWF6/Nut2smAoEAKSmO+6aTlZUFg8GAgIAAs+0BAQEVJttpaWnltk9Lq/hSxJIlS7Bo0aIy2/fs2QOZjFbNqXaDZ5W/fcR7pv/mAdi1a1e1hEPKV94rQ5ZyxfT//ferLxbCXUxMTE2HQB6o6NPl0dcRAOxKpAWkaszTZXMDAGafR3rQ51FNUamsryIKVCLx/euvv8x+Z1kWqampWL16Nbp162br4ZzO3LlzzXqJCwoKEBoaigEDBsDdnVs5E2I/u1/rAeOjE9wE4pI3mT8/BvQlPfNu9Rqgx6JfayhCsutmOlTaR3qrjAbIUq5AFdwS4PHBAAjxkKBzuHeNxUjM6XQ6xMTEoH///hAKqVKAM9gTm44CTcWvIwCI9JaiXT2vGoqwbmNZFv9O7gywj6xCWc7nkSI4Ej0X/1ZDUdZtpVforbE58R05cqTZ7wzDwM/PD3379sWyZctsPRxnvr6+4PP5SE9PN9uenp6OwMDAcvcJDAy0qT0AiMViiMVlxyMKhUL6gKgBYokEatXDmc6mUQ96DZgHbzTG4iI6NzVIY2BMH8xmeHyAxwcLQG1k6Bw5IXpfcx6NAz1xJimv7A0PXkcAEB3iA6GQVkGsCUa9FozOfBx2eZ9HCt8gek3VEK7Pu82T24xGo9mPwWBAWloaNm/ejKCgIJsD5UokEqFdu3bYt2+fWSz79u1Dly5dyt2nS5cuZu2Bkkt7FbUnzocnsP6HrC3MrYZISEWkQstvIwwAOS1ZTIhFmRxK/mUoNVbbEAdheJwmt4ncqEfe2dmc+H7wwQfljqMoLi7GBx98YJegKjJz5kx888032LhxI27cuIHXXnsNSqUSEyZMAFBSQ/jRyW9vvvkmdu/ejWXLluHmzZtYuHAhzp49i+nTpzs0TmI/Qg5LEXOp/EAcx1ptURZAfVpmlRCLkvKtV3W4z6HyA3GMwqRbAIfV9cTuPtUQDakKmxPfRYsWoaioqMx2lUpV7qQwe3r++efx+eefY/78+WjdujUuXryI3bt3myawJSYmIjX14RK3Xbt2xebNm/H1118jOjoaW7duxY4dO6iGrwuR+YZYbWPUaaApoF7fmuKrsF6qTEY9voRYxGU5Yj0tWVxjdEpu40dF7tTj6+xsHuPLsmy5hZwvXboEb2/HT16ZPn16hT22Bw8eLLPt2WefxbPPPuvgqIijcEl8AUCdkwoxveHUiPhsy0sWMwDuZCnRtp5n9QVFiItxlwhQYGHJYgaAh4QWr6gpRan3OLVzC2ng2EBIlXF+FXl5eYFhGDAMg0aNGpklvwaDAUVFRZgyZYpDgiR1l9Sn4omIj1JlpcIjopmDoyHlSSu0vGQxCyCt0PrS04TUZQ185LiQXPGSxSyABr6K6guImMmLu8qpnWckfQ45O86J78qVK8GyLCZOnIhFixbBw+Ph2EuRSISIiAiaNEbsLqBtH1zdtMRqu6zrpxHU/olqiIgQQuxPozNYvJ0BIObbPDqR2Ele/DVO7ZjyKtwQp8I58R03bhwAIDIyEl27dqVyHaRaCOVunNrl3jrv4EhIRQLcxIjPsVw4PNCNlpUmpCJGlsWdbKXFNiyAe7kqNPKjXt/qZtTrUJQSb7WdyN0HQoWn4wMiVWLzgKFevXqZ/q9Wq6HVms+op0UeiD0JZW7giyUwaCxfKi9IvgvWaKBv2zWgka/cauIb7iWtpmgIcT0avRFag+WJawyAfDUthVsT1HmZMOqsl5JzC2lQ7hwo4lxsvm6iUqkwffp0+Pv7Qy6Xw8vLy+yHEHtieHx4RFqvwmHUFKPg/p1qiIg8TsdhpnlqIdUfJaQiAh63ZIlPSVWNyLnFbZlozwZUMcoV2Jz4zpo1C/v378e6desgFovx7bffYtGiRQgODsaPP/7oiBhJHefdqC2ndlnXTjo4ElKeuBwVrH0c382yfBmXkLpMyOfBXyGy2IYFEOpJV05qQvLxfzi1C+44wMGREHuwOfH9+++/sXbtWjz99NMQCATo0aMH3n//fXz88cf4+eefHREjqeN8m3fk1C71zF4HR0LKU6w1WKzqAABqveWJO4TUdZ4Sy/NmJAIefOWWk2PiGNk3zlhvxPDg2aCV44MhVWZz4puTk4P69esDKBnPm5OTAwDo3r07Dh8+bN/oCAHg17wLeALrb/g5ty6ANRqrISLyKKmQb7XHVyKgsdeEVMTIskiwsiqbWm+E1kDvb9Ut9+4V6IvLLtr1OJlfCI3vdRE2J77169dHfHzJ7MYmTZrgt99+A1DSE+zp6WnX4AgBAIbHg1tYI+sNjQZkXDri+ICImUhvmdUe30hvukRLSEWylVpo9NaT2pR8qodd3RIP/sGpXb1uwxwcCbEXmxPfCRMm4NKlSwCAOXPmYM2aNZBIJJgxYwZmzZpl9wAJAYB6XYdyanf3340OjoQ8zl8h4jA5h3pCCKkI16WIacni6sWyLJJP/supbRCN73UZNpczmzFjhun//fr1w82bN3Hu3Dk0bNgQrVrR+BbiGKE9R+HaT59abZd94wx0qiIIZVTrsrpkqXRWP5DvZCvRIsgdPLoUSEgZ7hyXIubajthH1vVT0CsLrLbji6VQBNevhoiIPVRpGRi1Wo3w8HA89dRTlPQShxIpPCD1C7bajjXocf/on9UQESmVUaix2p+r0RtRqNZXSzyEuBq5SAAvqeXJbXIRH/4KcTVFRAAg7p8NnNoFtu0DvpAmHroKmxNfg8GAxYsXIyQkBAqFAnFxcQCAefPm4bvvvrN7gISUiuj3Aqd2d3Z+7+BIyKPo4ishVWMwsijUWF6cwksqpMlT1UhTkIt0jnNGwno/4+BoiD3ZnPh+9NFH2LBhAz799FOIRA+/4bRo0QLffvutXYMj5FERfZ8DGOt/ssVZKci8crwaIiIA4KcQWU1+RXweFGK6TEtIeZLyimFtbltqgQZ6qupQbeL/2wSw3J5vj4gmDo6G2JPNie+PP/6Ir7/+GmPHjgWf/7BEUXR0NG7evGnX4Ah5lFDuDq/IZpzaxu74ysHRkFIBCjFkQsvlynxkQvA5rk5FSF2Tp9bBWmeugWWh0lE97OqgV6sQt3sT5/Y8geVhKsS52Jz4Jicno2HDhmW2G41G6HS0jjhxrMgBYzm1y7lxGkUp8Q6OhgAAwzAQCyy/lWQUaaGj3ipCyiXgMZzGDNGXx+px/9jfnGr3Etdkc+LbrFkzHDlSdtzL1q1b0aZNG7sERUhFAtr15dz2yo8fOzASUqpIo0duseUvvQaWRZKVAv2E1FX1PKRW815PicDqlRVSdazRgJu/f8mprW+LLg6OhjiCzYPu5s+fj3HjxiE5ORlGoxHbtm1DbGwsfvzxR+zcudMRMRJiwvC4f1fLvHwUBUm34B7KYfELUmlcliNmABTTZVpCyiUW8MDAcqdvY38FTW6rBnf++QHaghxObaOenIys2CQHR0TszeYe3xEjRuDvv//G3r17IZfLMX/+fNy4cQN///03+vfv74gYCSmD4XP7znb2y7dpGWMH47IcMYuSpY0JIWXdzVJa7fFV6+h9zNEMeh1uc5wfoghpAK8GLR0cEXEEzolvXFwcWLbkpdmjRw/ExMQgIyMDKpUKR48exYABtGoJqT4RTzzPqV1R8h2kXzzk4GjqNoVYAF+55RqWDIBQT1q2mJDyJOSprLZJpKFCDnf95085j+1tNOJVB0dDHIVz4hsVFYXMzEzT788//zzS09MdEhQh1jQYMp5zr++lb+bBoKU17h2pgY/c4u0sQDPSCamA3mB9ZhtNDnUsZXoi4v/7iVNbmX8ogrsMdnBExFE4J76lvb2ldu3aBaVSafeACOFC5OaJyIEvcWqryc/G9V+WOziiui2zyPLqbQyA25k0S5qQ8nhKhVZfP14yWhnMUViWxcWv/se5fYvx/wOPY8cLcT5VWrKYkJrUfMzb4EtknNrG7/kZqqxUB0dUd6UXaSyOUWQBpBVqqiscQlxKqKflqg4sgIa+lq+qkMqL3/Mzsm+e5dRWHhiOgFY9HBwRcSTOiS/DMGVmlNIMU1KTGB6f+zgr1ojjH46DXk1XKRyByzsBvVsQUr6EXMtjfPkM4GdlHD2pHINWjRtbVnBu3/HttTZVFyLOh3NfPcuyGD9+PMRiMQBArVZjypQpkMvNv4Vu27bNvhESYkHkwBcRH7MZ6hzr481VGUmI2/0TGo2kSQn2FuguwZ0sy18qAt0l1RQNIa5DpdVbvRpiYIH0Ii2C6TVkV0aDHieWTIJBbX1yIcAguMtguIXUd3hcxLE4f20ZN24c/P394eHhAQ8PD7z44osIDg42/V76Q0h1EkhkaP/mF5zb3/z9S+Tfu+7AiOqmRr4Kq23cxTQmjpDHFWr0nNoVqGllVHuL/+8n5MSe49SW4fPReNRrDo6IVAfOn0Q//PCDI+MgpNK8o6Lh27wTsq6dst6YNeL4RxPRd9kuiN29HR9cHSET8cFjAKOFgYq3MovQ0FdOQ6QIeYSQz63/iWs7wk1RehJu/Mp9iEPzl+bCrV5DB0ZEqgu9kkit0HbaZxBIuU3+0CnzcXXjR2UqlZDKSylQW0x6AaBAo0eelaWNCalrvKRCSASWP4oZACE0zMFu1HmZOLrgBRj1Wk7t5UERiOw/2sFRkepCiS+pFSSefoh+5SPO7ZNP7MLN37gPkSCWafTcaoyqObYjpK7QG1norXxrDPWUQkIrH9rN9c2fc16WmOHx0WbKErpSVYtQ4ktqjeAO/eAV1Zpz+9t/foXs2POOC6gOkXH8UJaL6MObkEcl5KqsJr6wuqAx4erm1tW4f/Qvzu2bjZ0Nbxs+V4jzo8SX1BoMj4/O734NkbsP531OfjIZ+YmxDoyqbghyl0DIs9wjIhfy4C4RVlNEhLiG5Hzrq0qmFFANbHtIObkbt7at4dxeHhCG+gPHOjAiUhMo8SW1ilDmhravfcK5vUGjwvHFL6OYQzk0UjE+j0EDKwX2lTojzUwn5DFGDnMNuLQhluXfu44LX3NfnY0vlqHznG/A8OgqVW1DiS+pdfxadUNE/zGc2+uUBTi/djb0mmIHRlX7WZu4xgC4baXWLyF1jbeVpYgZAF5SWryiKvLvXcfhBWM41ust0Wn2esgDwhwYFakplPiSWodhGLQc/z78W/fkvE/29dM49sFL0BdTYlZZ2SrLM6RZANlKbrOoCakrvGWWh/+wABr5Wa+TTcpn0GpwdtXbYHXch4sEdxkM36YdHBgVqUmU+JJaiWEYtJq4AHyxlPM++feu48rGDx0YVe3G4zDr2cowYELqnBvphRZvZwDU86BSZpWhykzGvrcHQ5l6j/M+fi27ou1rSx0XFKlxlPiSWkvmG4wuc78Dw+c4oYplkXR4B85+OQMGLU0msVUIhw9nWnKVkIcK1DpkqywPEWIBq0sak7JYoxEnPpkMdXYa5334UgU6zFgFnoAm4dZmlPiSWs27URt0fvdrm/ZJObkb59e+66CIaq/Gfm5W22gNVMeXkFIqrYFTO6WW27LGpIQ6LxPHFr8MZWo8uJaCYwRCdH5nLQQSmWODIzWOEl9S6/m16Izwfi/YtE/q6f9wddMn1PNrA8WDZYstuZ2lhJ6SX0IAAGIrK7Y9bEeVBbjSFubiyILRyLGlRjuPj56Lf4MPjeutEyjxJXVCq/Hz0GDoRJv2ift3I04smQiD1nqdTQKkF2msLlusN7JIL6IvE4QAgKdUaDX55fMYTsOICKApyMWZlW+iODMZtiz60eSZ6fAIb+K4wIhTocSX1AkMj4fmY2fBt3knwIalJ3Niz+PCV/+D0UCXGq2xvvpUCZ2BapISAgA5Kp3V5b4b+Mgg5NNHtTX5CTex7+1ByL5xxqb9Gj/7OqJGvOqgqIgzolcTqVPav7ECHuFNbdon5cQu7H97CJTpiQ6KqnZwlwg4tfOQcmtXUw4fPozhw4cjODgYDMNgx44dVvc5ePAg2rZtC7FYjIYNG2LDhg1l2qxZswYRERGQSCTo1KkTTp8+bXa7Wq3GtGnT4OPjA4VCgaeffhrp6eYLqyQmJmLo0KGQyWTw9/fHrFmzoNfTlzJXdSuzENa+htPQIOt0xUoc/3A89MoCm/ZrNGoqGo+aCsaGzhDi+lwm8c3JycHYsWPh7u4OT09P/N///R+Kioos7tO7d28wDGP2M2XKlGqKmDgjkZsXen74G/yjewBWP3IeUmUm4+jCsbTIhQVeUhG8pZZnQ/MZQCFy7sRXqVQiOjoaa9ZwW9o0Pj4eQ4cORZ8+fXDx4kW89dZbmDRpEv777z9Tmy1btmDmzJlYsGABzp8/j+joaAwcOBAZGRmmNjNmzMDff/+N33//HYcOHUJKSgqeeuop0+0GgwFDhw6FVqvF8ePHsXHjRmzYsAHz58+334Mn1SqjSGv1gnwW1b62KOnwDuyZ2gM6Zb5N+/lH90CjUZQP1EUuk/iOHTsW165dQ0xMDHbu3InDhw/jlVdesbrf5MmTkZqaavr59NNPqyFa4swYHh+tp3wMqU8AOCe/rBGa/Czse2sAUk7vcWh8rqxpgOXKDgYWuJVp+QtrTRs8eDA+/PBDjBo1ilP79evXIzIyEsuWLUPTpk0xffp0PPPMM1ixYoWpzfLlyzF58mRMmDABzZo1w/r16yGTyfD9998DAPLz8/Hdd99h+fLl6Nu3L9q1a4cffvgBx48fx8mTJwEAe/bswfXr1/HTTz+hdevWGDx4MBYvXow1a9ZAq6XkqLai3siK3T/+Dy6snwuDjR0SDZ98BR3fWUtly+ool0h8b9y4gd27d+Pbb79Fp06d0L17d6xatQq//vorUlJSLO4rk8kQGBho+nF3d6+mqIkzk3j4oscHW+DbootN+2nys3B25ZtIPLjNQZG5tkyl1upXiTu1bNniEydOoF+/fmbbBg4ciBMnTgAAtFotzp07Z9aGx+OhX79+pjbnzp2DTqcza9OkSROEhYWZ2pw4cQItW7ZEQECA2f0UFBTg2rVrDnt8xHEC3cQc2tDEtsfpi5W48fsXOL9mlm07MjwEtOmNps+/BR7fua88EcdxiTN/4sQJeHp6on379qZt/fr1A4/Hw6lTpyz2zPz888/46aefEBgYiOHDh2PevHmQySqu06fRaKDRPJx1XlBQMmZIp9NBp7NcaJw4Xuk5sMe54Cu80P6ddTj2wYsovH8HrJH7WLoLPyyGKj8HYX2egVAqr3IstUWhSg3W+KA2qbH8GqUqjQFardZlerL0er3Fv7fU1FT4+vqatfHx8UFBQQEKCgqQm5sLg8EAHx8fsza+vr64ceMGdDod7t+/D5FIBLlcbtbG398fycnJ0Ol0SElJgb+/v9nt3t7eAID79++jRYsWnB+TPV9HpPIKi9UVvk5Kt4d5iOg8PUJXrMSppZNRkHQH4Its2jek6zC0eGmO3cbF0+vIuXA9Dy6R+KalpcHf399sm0AggLe3N9LSKl6VZcyYMQgPD0dwcDAuX76Md999F7Gxsdi2reLeuiVLlmDRokVltu/Zs8diwkyqV0xMjP0O1mEsUInyjbEAYg8csl8ctUTpq0SWcqXCNv/ev1gtsdjDuXPnIBRWfElUpVIhNjYWu3btMm07e/YsAGD37t1QKkt6uI8fP46cnBxTm7i4OOTl5WHXrl3/3959h0dVpQ8c/97pM+m9QCAJoUoV6UpvtrUg6uquioplxV3EXUVlQVyxo4jKWlfAn9h2FVdgVURQVKQKgkAkBAiE9D4pU+/vj4FAJCSTkGQmyft5Hh4yN+feeWfulDfnnvMedu7cidvtrnEM8AyBSE9PZ82aNWRkZJCXl1ejzck/0rdu3Yq7AX+4ndSk7yPRKPV9q3y/4esWiaNVGfwHGNzw3TKBzK/WNXk48j7yDxUVFV6182niO3v2bJ5+uu41sfft29fo458+BrhPnz7ExcUxbtw4Dh48SJcuXWrd56GHHmLWrFnVt0tLS0lISGDixIkyTMIPOBwO1q5dy4QJE+pMRhpKdbvZ/+GLHFq7ooF7Klii4hh038sExCQ0WTytVXaZje8O5mI5vpuK+D6gObPwflyQgRFJkT6IrnEGDhzIJZdcctbfJycnExYWVqNNXl4ewcHBXHXVVdjtdqZPn06XLl1qtPn3v/9N9+7dueSSSzCbzbzwwgsMHz6c0NDQ6jZ//vOfGT58OJdccglbtmxh1apVNY5x6NAhAC677DIGDBjg9WNqrveR8N7enFL25VjPPrnN7cJyfDejxowjwFz/kIi2Lm312/z68ZJG7Zsw8kp63/Rwk19lkveRfzl5hb4+Pk1877//fm655ZY62yQnJxMbG1tj9jN4Lj8WFhYSGxvr9f0NGTIEgLS0tLMmvkajEaPxzA8ZvV4vL2w/0hzno8+N91OVf5TsrV81aL/KrEN8+8CldB57LX2m/b1djx3rGKYj0GTADZ6kt5bEN6fChQsNJn3rWI1Kp9PV+VobPnw4a9asqdHm66+/ZtiwYdWv04EDB/LNN99wzTXXAOB2u1m/fj0zZsxAr9czZMgQ9Ho93377LVOmTAEgNTWVjIwMLrzwQvR6PRdeeCFPPfUURUVF1VfANmzYQHBwMP369WvU+0E+13zHRe3vjzNote36HLldTvZ/+CJpn73ZgDo8Hhq9kUEzXyS6/8hmHVol7yP/4O058Ok3dFRUFFFRUfW2GzZsGMXFxWzfvp2BAwcCni8Wt9tdncx6Y+fOnQDExcU1Kl7RtikaLRf8+QUOr32PvSuexe1s2LitI19/iL28hIH3PNtuZwsrioJRp6GuOdZuFdILy+kV459XUKxWK2lpadW3Dx06xM6dOwkPD6dTp0489NBDZGZmsnz5cgDuuusuXn75ZR544AFuvfVWvv76az788ENWr15dfYxZs2Zx8803c8EFFzB48GAWLVpEeXk506ZNAyAkJITbbruNWbNmER4eTnBwMPfeey/Dhg1j6NChAEycOJFevXrxxz/+kWeeeYbs7GzmzJnDPffcU+sf68K/BZl0Xq0t1p6XK87dtZGfXnsEW3Few3dWNFzwlxeIGTCq6QMTrVqr6Jrq2bMnkydPZvr06bz66qs4HA5mzJjB9ddfT3x8PACZmZmMGzeO5cuXM3jwYA4ePMiKFSu45JJLiIiI4Oeff+a+++5j5MiR9O3b18ePSPgrjVZH8uQ/EtQxhU1P3g5qw8ZNZm3+gi9++ZHuU2aQNPHGVjOBqykVVTqobx56ntUOMfU08pFt27YxZsyY6tsnhz7dfPPNLF26lKysLDIyTi1mkpSUxOrVq7nvvvt48cUX6dixI2+++SaTJk2qbnPdddeRl5fH3Llzyc7Opn///nz++ec1KjS88MILaDQapkyZgs1mY9KkSSxZcurSrlarZdWqVdx9990MGzaMgIAAbr75Zh577LHmfDpEMwk0eJfQ6jTt7zMEIGvrWra9OLNBk45PskQn0HfaXKL7XdgMkYnWrlUkvuCpzjBjxgzGjRtX/eWwePHi6t87HA5SU1OrBzcbDAa++uqr6p6VhIQEpkyZwpw5c3z1EEQrEtV7GIPuW8zO1x/BYW1YYXSHtYQ9yxZgK8mn57UzmyfAVs6fv8pHjx6Nqp69L662VdlGjx7NTz/9VOdxZ8yYwYwZM876e5PJxCuvvFLnwhmdO3c+YwKcaH1UVWXn8brHI/rze6Q5FaX9zN73n6dg7+aG76xoCE0+j4se+6BddjoI77SaxDc8PJwVK84+8SgxMbHGl1VCQgLffCMz7kXjxV0wjpj+F7F54Qzydn0HXl2YPOXAytfI2raObr+7gw4jLms3H8TRAQbqm2IQFdCwMkRCtCXFlQ6KK+seStWwT5u2oWDfVn548jZUV+PKjYV368/g+5e0m89a0TitYgELIXxFozMw+L7FRDVwoYuTrMcOsmPJA+x7//kmjsx/dY2ue/U2gPwKWWlMtF/l9rPU7m2nig7uZuuL9/H9P25GdTqgjisutVF0eoY++AYj5v4fhsCQZopStBWS+ApRD63BxNDZrzPovsXog0IbuLfnAzztszfZMPtKjn2/CncjezNai2gvenOPlVRRZmvbz4MQZ2PQyVfvSZk/rGbj3OvJ2vIlDe7nVjRo9AaGPfgG0f0ulJ5e4RV59wnhBUWjJW7QBEY+9gGGwFBQGv7WKc1IZccrf2PLc3/C7Wy7PZ5Wu3cJ7bHiumo/CNF2hZn11DdnTd+GJ7Wpqkr+L5vZ/Nyf2P7yXz2TiBs4kRgg4aIrGPXEJ0Se5311JyEk8RWiAQJiOjFywb9JuOh3NHb6Se6ujXz918s4tHYFzsrypg3QDzjd9ffaKF62ayteeeUVEhMTMZlMDBkyhC1btpy1rcPh4LHHHqNLly6YTCb69evH559/XqNNWVkZM2fOpHPnzpjNZoYPH87WrVtrtFFVlblz5xIXF4fZbGb8+PEcOHDgjPtbvXo1Q4YMwWw2ExYWxpVXXtkkj1mc3f5cK/W9/Ht4MWSoNVJVlZ/ffowfFtxCzk8bGn2cvrfOY8BdTxDUIbnpghPtgiS+QjSQJaoDA+56kgvnr0CjMzSq97ci9yi7336cr+6bROnRX5shSt8J0Nc/Z1YFQkz+Nbf2hx9+YPLkydULSDSVDz74gFmzZjFv3jx27NhBv379mDRpEk899VStyfCcOXN47bXXeOmll9i7dy933XUXV111FX/961/p3r07ZrOZmJgY3nnnHd566y12797NxIkTGT9+PNu2beMPf/gDERERGAwGFixYwF//+lc2b95MQEAAgwcPplu3boSGhnLjjTdy/vnnc8MNNzBt2jR27drF999/z9ChQ5kwYQKhoaFERERwxx13YLVam/Q5ac/cqsqBvPqfT7O+bX09u+w2jn73X7595BqOfPW+Z2MDx/ICmCPjOf+eZ0kcf30TRyjai7b1zhKiBYV37c/wOUsJiOnUyCOo2EsL+XbOtex55ynKMtObND5f8Xb8or90+H733XdMmDCBESNGcOzYMe68884mPf7zzz/P9OnTmTZtGr169eLVV19FURTmzJlzRjKcm5vLO++8w8MPP8wll1xCcnIyd999N3369OGFF15g3rx5/PTTT9hsNlRVZc2aNaSkpPDoo4+SlJTEuHHj0Ov1rFmzhrCwMG699VauvPJK+vbty/LlyykvL2fq1Kns2LGDxx9/nPT0dOx2O1OmTKlOiJ955hlSUlLYvHkzn3/+Ob/88ku9K2wK71XYXdhcdV/WVxRPPey2wpp9hK/vv5ifljxIyeG9jT5OyhV3Mn7RWjqOuKwJoxPtjSS+QpyD8G4DGLtwDRf85UU0eoPnG6tBVNwOG+mfv8P6v13KnneeqrOGbGtS3zOx83gxbh8+1o0bNzJ+/HguuugisrOz+eijj/j555+ZOHFik92H3W5n+/btjB8/vnqbRqNBo9GQkJBQIxm2WCz861//wmazYTLVXAKkpKQEg8HADTfcQIcOHXC73YwbN67GkIn8/HwA3n77baKiosjLy+Oee+6pXp49JCSEYcOGYbVaSU5OxuFwUFFRQVVVFcOGDSMuLo6JEyeiKAqvvPIK3bt3Z9CgQbz66qv85z//qbGanWg8jTdjd1XQtIGJWtbjh9j73kK+eegqKguzG30cRaen140P0Ou6mSgaSVvEuZFXkBDnSFEU4odMZPicZRgCGllK58TEjvT/LWPj3Os58vWHOKta9/jf+lLaSoebXKutRWI53TfffMPYsWMZOXIkeXl5/Pvf/2bXrl1cc801aJr4SzU/Px+Xy1VjhTa73U5hYWGNdeU1Gg3jx49n06ZNTJo0ieeff54DBw7gdrtZu3Ythw8fpqqqii1bthAUFMSAAQNYvXo1F154IS6Xi//7v/8jMzMTrVbL1KlTq5d2X7t2bY14YmJiyM72JCDHjx8HPK/fRx55hFWrVmEymSguLqa4uLh6H7PZDHh6xsW5M+s0mOq5KqICsUH1rX/ov1S3m91LH+frv15C2qq3cNkqGzWsAaDLpdOYtGQjKZdOa+IoRXslia8QTSS8a38mvLyefnc+gT4wtBG9vx7FB39m15vz+PJPo8j9+fumDdLPVDparp7phg0bGDNmDKNHj6awsJCPP/6Yn376iSlTpjR5wluX/Px8VFWtkfjCqaT0xRdfpGvXrvTo0QODwcCMGTO4/fbb0ev1XHjhhej1en766SdCQ0N5+umnMRqNLF68GI1GQ3FxMV27duWFF14A4O9//zvLli2rcT/Hjx8nLCyMRYsWATB79mymTZvGwIEDeeONN3C73UyfPh273U5RURGzZ88GICsrq/mfnHYgu8xGlbPuoQ6hZj2RAfo62/gju7WE9M/f4du/X8uhL9/1bGxMwqsoKBoN/e9YwHk3PiC1eUWTksRXiCakNZjoPOoqRj3xHyxRHc/pWM6qcn58ejrbFt/H8c1f4Ha2nTF/J5n12mY9vqqqrF+/nlGjRjFmzBiKi4v55JNP2LFjB1dddVWzJ7yRkZFotVpycnLO+F14eHit+0RFRbFy5UrKy8s5cuQI+/fvp7CwELfbzZIlS9ixYwcff/wxOp2OOXPmcPToUbZs2YKqqoSEhPDEE08wcuRIAK666ipeffXV6mPn5OTQp08ftm7dyh133AF4hkbk5uYCMGDAALp06cIXX3yBxWIhNjaWpKQkYmJiWvSPg7ZsX25ZvW2Swy2tribtsR9W8+U9o9iz/AlKDv3S6ONodAa6/m464xatpdPoq5swQiE85JNMiGZgiYxn9FMr6XvbfAJiExt/IFXl+OYv2PbiTNbdN4myzINNFmNzs3iR1NZ3ybexVFVl3bp1jBo1irFjx1JWVsann37Kjh07uPLKK1ssiTMYDAwcOJB169ZVbzuZ8CYmJtZom5OTQ2xsbPVtk8lEhw4dcDqdrFy5kgsuuIDbb7+dPn36cNVVV/HEE0+wcOFCYmJiKCoqAuC8884DICkpidjYWOx2OxkZGQCUlpayefNmRo4cSUpKCqNHj8ZoNOJ2u3nrrbcATym1srIynn/+eTIzMykoKODRRx8lLy+P5GQpG3Wu3KpKTln9w3sKWsnKho4KK4fWvsemp6az4+W/4nacw9AlRYM+IISLHnufntfdhyUyvukCFeI0kvgK0Ux0JguJ465l7HOrSRh55YmtjejFOXGpsLIwm28evppti2dx7IfVfr8IRr+44Hrb7DhW0qT3qaoqa9eu5aKLLmL8+PFUVFTw3//+l+3bt/O73/3OJ71os2bN4o033mDZsmXs27ePv/zlL2i1WgwGzwp3N910E7Nnz2bdunUMGzaMzZs38/HHH5Oens7GjRuZPHkybrebIUNOFen/4osv2LNnD263my+//JIxY8YQHh5ePTFSURRmzpzJ6tWrCQoKYvfu3dx0003Ex8dX1+m1WCzccccdFBQUsHfvXlJTU7n77rsBmDp1KjExMQQGBvLBBx9gMpmYMGFCyz5x7VhrmN+au/t7vpwxit1v/4O8n89t/LchOJxuV93NmGc/IySxZxNFKETt/KuQphBtkKLR0P/OJ4juP5L0z9+h6MDOxn2zqSpuh53jmz/n+I//Y19kPMMeeovAuMSmDrlJ6GrpzdWXlRCcnobOVoXTZKYwKQVrpzACjef2UXQy4X300UfZtGkTgwYNYtWqVVxyySU+v2R83XXXkZeXx9y5c8nOzqZ///48+uijPP7444wcOZL9+/ezefNmysvLmTZtGvv37+fWW2/FarUSGhrKJZdcwowZM3jjjTcYNmwYQ4YMYePGjSxcuBC32820adOYMmUKU6ZMYeLEiTzxxBNce+21dOzYEZfLRXZ2NoMGDWLYsGFMmDCBnTt3EhkZSVpaWvUktjVr1vDpp58yZMgQbr/9dg4dOkReXh5r167lb3/7G0899RShoaE+fR7bAo2iEGjQYrXXPbY93FL/st++UFWST8b6f5P78/cUpm4/twxdUUBViRs8kQv+/DyKpnmHPQlxkiS+QrQARVHoMPRiOgy9mJLD+/j+HzfhslWiuhsxuetkD3B+Fusf+B1hKX2JOX80nUZNwRgc1sSRN561yrN0sTk3iy4fv0fnLz4l+MiZtYqdXbvBH26E6dMhLq5B96GqKl988QXz58/nxx9/ZPDgwaxZs4bJkyf7POE93YwZM5gxY0aNbaGhoTWS4eXLlxMTE0NMTAz9+/cnMTGRpUuXAuB0OgkODmbOnDlkZmYSFRXFHXfcwYIFC2okpJ988gkPPfQQjz32GElJSSxZsoTp06cDUFVVxQ033MCUKVPIz88nICCAESNGVP+hcNJNN93EhAkTsFqt9OjRg9dee40//vGPzf4ctQelVQ7K60l6tQokR1gatYRvc8rato7ti2fhdjmbJLagjl1JnvxHOo26SpJe0aIUta0UDW0mpaWlhISEUFJSQnBw/ZduRfNyOBysWbOGSy655IxZ8a1JeU4GaZ+9Rca3n6A2xaQ1RUFnCmDo7DcI79r/3I93Dk6eo/MGDqfyH0/S618vo/XmMRoMMHcuPPgg6Or+m1xVVT7//HPmz5/P5s2bGTp0KPPmzWPSpEl+lfD6q7byPmptNh8pJL2wos42PaMD6d8h1C/OUeGvP3Fo7XsU7NtK1TnU4T1J0WjRmiyMmPd/hCR0a4IIfcsfzpE4xdt8TXp8hfCBgJhO9Lt9Pn1vnceB/77B/g8XeZY+bmxPiqrirLTy3bzfo7MEEXXeUJIvvpmIHgObNO6GSLjuKow/nCrH5tZqKezVj6LuvbAHhWAoKyFs/y9E7N2F4naD3Q5z5sDq1fDZZxARccYxT65WNn/+fLZu3crw4cP54osvmDBhgiS8wu9lFFfW26a+HuHmpp4YUpW2+l+kfrQYRaNt3JWp39Do9HS88Aq6XnEHATEJTRCpEI0jia8QPqRoNHS78k6COnQh7bM3KUrbdc7HdFaUkb39a7K2rqX7lBl0GH4p5og4tAZjE0TshRPjRjU/7QA8CW/qDbeTesNtVMacOZQhpbyAQZ8sh0WLwO1m/aZN5AwcyPW7dkGIp36nqqqsXr2a+fPns23bNkaMGMHatWsZN26cJLyi1XB5sU63w+2bIQ7OqgrSP1/OobXvYSvKrd5+LkmvotGgut30uXUenUdPQaOTXlHhe1LVQQg/EDdoPBc99j6TX99M3JDJno3nkNCd/LJK/c/LfH3/xXxx1wj2/N/TOCqsTRFu3e6/v/pHV3wHvlz2X3beN6fWpBfgYEAElU89A5s2kRoVxe+A748cgb/8BVVV+e9//8ugQYO4/PLLMZvNfPXVV9XLDUvSK1oTi6HusawKEGxsueRQVVWKD/1C1tav2Dj3OvZ/9FKNpPdcRfQczLBH3iZp/PWS9Aq/IT2+QvgRQ2AwF9y7kMO9BpG+ZhnlORlNclxnVTnp/1tG1ta1JE24AUt0R2L6j2r6XuDPPoN//xumTIHQUI5+vJoiw5lDFk6nAsWVDtTevZkaFkaHggKecLv5dNky5n/3HT8dPMjIkSP5+uuvGT16dKtJdm02Gx9//DHDhg07o2avaH+sNme9KxWqQEpkQIvEk71jPb+8+wzlWYeb7qAaDbjddL3qbrpedhs6c8s8FiEaQhJfIfyMotGQNOEGEsf/HntZIbvenEf2tnV4+oPOYS6qqlKZl8neFc8CoLMEcd6Nf6PzmKlNEjcATz556udnnsGVkgIZRfXuptUo/PnPfybt6FGeuPZaRr7/PjuB0QUFrF+/ntGjRzddjM3MZrPx1ltv8eSTT5KZmclHH31Unfi6XC5WrlxJp06dalRSEG3f/twy6hvpkBRuIdjUPD2jqttN3u4fyN39Pdbjh8jd+c05XVWqTXhKf1Iuv43YgWOb9LhCNCVJfIXwU4qiYAyOYNDMFzmy/t+kf74ca+aZ5cAay1lRxq435nJw1duYI2KJ7j+ShJFXYQgMadwBd++GTZvAbPbcvvZa4rwcTfXphyt466236NixI/e9/z5jLRa+qahgZHFxg0uc+UpVVRVvvvkmTz31FFlZWVx//fXMmTOHnj174nQ6+eCDD3j88cfZv38/Tz31lCS+7cyheqo5gKfOb3OoyMvkx2fuxJp5EDRaODlu9xyLOp2c+NbrDw+QOO56dEZzE0QrRPOSxFcIP6dotCSOu47EcdfhctjZ/8EiDq55u8lmW1uzDmHNOkTeLz+S+p9XuOAviwiIScAYEonOZPH+QBs2/CZwBYteR2KYmcNFZ5/Nfnj/Hh65/TbA01s6atQowgsLeXn3bpYBz61ZQ1j37g1/YC2ksrKS119/naeffpqcnBxuuOEG5syZQ/fu3XE6nSxfvpzHH3+cAwcOcOmll7Js2TIGDx7s67BFC3KrKk4vJrbZnE1T0cHttJPxzUoOf/Ue1uwjqA5b9ap+NMFnBoBGZyCqz3C6XDqNyF7yehathyS+QrQiWr2BXjf+jcjeQ6tXgXNWNtGEtRMl0X586nbA88XWYcRl9LjmXswRsfXvv2NHrZt7xQTVmfiqqETGdaRzh1giTiy7W2oyoQJOwLVzZ8MfSwuoqKjgtdde45lnniEvL48//OEPPPzww3Tr1g2n08nSpUtZsGABaWlpXH755axYsYILLrjA12ELH9AoCgatgt119uRXAQIMjf9KtltLyN+7GVdVBYe+XEFx+u7q1dGaiqLRoGj1DHngVaLOG9pkxxWiJUniK0QroygKMf1HEtN/JADZ29ez7cW/4Ha5mnS1J7fTztFvV5K15UviBk1AHxBEVO9hRPe7qPaVlnJyaj1O8YkV3M4mqUcfXlz1AxcmRZAQeuJSaVYWxMd7fi4tPZeH0eTKy8t59dVXefbZZ8nPz+emm27i4YcfJiUlBYfDwb/+9S8WLFhAeno6V155JR9++CEDBgzwddjCh0qrHDjqSHrBM3o/OaLhk8FcDjt7332Gw19/eOZiOE2U9Gr0RizRHYkdOJbEcddhierQJMcVwhck8RWilYsdOIZxi9Zy5OuPyPtlE2UZv+KsKm+aLz3VjbPSytGNK1E0WtL/t5yA2M4MmvUyxqAwdObAU5UhzjI+0dtRizXanV7L1E+qOJSXl7NkyRKee+45CgsLufnmm3n44YdJTk7G4XDw5ptv8sQTT3Do0CGuvvpq/vOf/9C/f39fhy38wO7s0nqnpSaGmQk11z+xze10kLV1LRnr/0N5fiaO8lIcZcWc08TXWpwcShXapS9DH3gVQ5D/LIcuxLmQxFeINsAcHkOPa2bQ45oZ2K0lbHtxJvm//Hhuq8GdTlVRXZ6e2/LsDDY8cDng+XKMGzyRblffTXCH2nuBogKNXtWjsOhP60VOTT3188meXx+xWq288sorPPfccxQXFzNt2jQeeughkpKSsNvtvP766zzxxBMcOXKEa665hpUrV9K3b1+fxiz8h9Pt5mgdQ31OqmuYQ1nmQUoO7UVV3Rxe+55noZumem/XIrzb+QR2SCZ+yGSieg9D0UjJf9F2SOIrRBtjCAxh+CNvU5z+C9nb11F2PJ2sLV96ftkklz5PHUN1uzi++Quytn1F78pwkmppbdZr6VzPBDeAbceKmNg9xnNj48ZTvxjom2WXy8rKePnll1m4cCGlpaXceuutPPTQQ3Tu3Bmbzcarr77Kk08+ydGjR5k6dSqrVq2id+/ePolV+C+7U633jz4FsLlqT2J/fOZOin7ZdOYvmiHpNQSF0efmR+gw/NImP7YQ/kISXyHaqNDk8whNPg+AvF9+ZM/yJyk7+mvT35HqRnW6Sa86WiPxTfvsLSK790d1uejZoRuH6ynnW1DhoKDcToRRA//6l2ejosDYWmqC7toFa9d6JtRlZnoS+thYGDAAxoyBIUMaPUSitLSUl156ieeffx6r1crtt9/Ogw8+SKdOnbDZbCxZsqS6Ru91113H3//+d3r16tWo+xJtn0Gn8eqKh1mvpfDATtLXLCVn10Zcig5+9zCFv+70erhQYwQn9qLTyCuxRHUgut+FaHSGZrw3IXxPEl8h2oGo84Yy+qmVlB09QGVRLpk/rOLYxk+brCQaQHmQgdxYC2Elnq94+7NPsinJUw7NHd8Lbnyx3mPkWm1EvPo6ZJxYse7SS6Fz51MN1qyBf/wDfvyx9gN89JHnf4vFU/83JcWTDI8YAZMmgf7sYyhLSkpYvHgxL7zwAuXl5UyfPp3Zs2fTsWNHqqqqePnll6tr9P7+97/nkUceoWfPnvU/MaJdyy+31Zv0qqpK6crnSN/4bxRFg+p2oepOjJ1vpuEMxtAokif/kS6X3CLLCYt2RRJfIdoJRVEI7tSN4E7diO47gvjBk0j/fDlFB3/G7bBXj+E9F7+eF8mQH/IA6LYnn+LgKEoizF4n1+btW2DOnJMBw0MPeX4uK4N77oF33vEukIoKOHjQ8++LLzzb4uPhL3+B++6rkQAXFxfz4osvsmjRIiorK7nzzjt54IEH6NChA5WVlSxevJinn36a7OxsbrzxRh555BG6+3FdYeE/VFVlx7Hietvptn9M/rcfndinaf4QreHEeOCA+GQu+PPzGAJDMYVG1l6dRYg2ThJfIdohRVGIHTiG2IFjAE/psl1vzKuu3qCqaqN6mgqjLRzp4ln5TedSGbb+KDuGx5OjOwS2cjCevVxTh2++pOMj90JVlWfDX/4Cw4dDcTFMnAhbt55q3KcP3Hor/PQTLF9eZ0xVgAng+HF48EF47z14912K4uJYtGgRL774IjabjbvuuosHHniAuLg4KioqWLRoEU8//XR1jd5HHnmErl27Nvg5Ee2TvayI/OJSSqrqTy41x/c2fQCKBo3eQFDHFIzB4XQcfhlxQyah1ctQBtG+SeIrhECjMzDg7ifpeuWdZG5ag72siIL92yg9kkpDyyTt6xNV/bPB4WboN8c41rmU/R2WkHfN/fCbGeLhv+ykx/LX6Lx2VfW2ij7dOdQnAuXdZ0l56UMMW7d5fhEcDIsWwQ03wLXXwn//e+pAXbrAnXfCuHGQlgb33svO3FwuAj63WBhRWQmqSuHOnTxz/vn8U6fD4XZz991387e//Y3Y2FjKy8tZuHBhrTV6haiLqqooikJR2s/s//dL5P38Pa7O/eHaZ+re0e2GgPAmjyeq91D63/E45ojWseS3EC1FEl8hRLXAuES6X/0nwFOx4eD/lpP++XKqCrK9PoZb50lsc+IC6JjuqeTQ8UgpHZ9aTPm/PqSoR28cQSEYSksIS92DJbfmsTN7pbCzh4p7/Qck7S/AsC0LAFdYKMcX/BVHvJ6Ot92M4WTSazDAY4/B/feD7sRH2vnnU9qrF1MHDKCr08nAigoKrr+e57/6isX5+ZTbbIx3u3ln61Zi+vWjvLycZ599ttYavUKcTUVeJgdXv83RjZ/irLSiDwrDYS05Ma9SBWtB/QfRaFC8aXdWnqlvAbGd6HrlXWgNRkISexEY27me/YRonyTxFULUStFoSbl0Gl0uvhlbST6qonBk7Xv8uvJVFEXxVEarYzjE9uHx5Efq6PVTLgaHp11AbjYBubUn0baQUH6a+QgZKRGY1jyDrtJGj52nVoP7cUAQBd+tIPrDMpI3HAVANRrJXfAgVecnE559mKCOnp5ZVVW5/bHHyDWZWFFZyXyXi5fffx/VbCbMYCDAbuf/HA4sDz7I06NH89zChWfU6BXidJUF2Rz68l2O/bAKV1UFpvAYynOOojod1WPYHWWe0iUnqwa6eoyp+6CqCrZytAfPMlmzDvrAELR6I8awaDqNupqEi65AZ7I0+DhCtDeS+Aoh6qRoNJjCogHoMfXPdBpzDUe/XUll/nGcVRVkbV3rWeDitxPYFIWMLqFkdgqmw5FSOmSUEWpV0Jdbq5vYA4Mo7NmXIxdfyZFJV+AyGtDuWw9Ax8Ol6JyehDkjKYSCmABwu+i9/VQy/HPfMI5s/xC2fwhARK/BnHfjgyx+YSEfffQRk8eOZMzGTSguFzOAyj59eHn7dlaFhvJWcTELv/iC0nXruPW226pr9AphzTpE+ufvkL1tHW6HHUtsZ8qO/uqZBHoyyS2veylt1RyMY8j1dTRQQVEwrH8VxeU4e7vf0OiNJE28gZ7X3SfVGIRoBEl8hRANYomMrx4OAVByeB9pn73J8S1forqcKFpdjVHBLr2GjJRQMlJCqbz+eUzaULR2Oy6TmYro2DPG/KqmIAA6ZJxKLA728CyXGplTQWCZHYCCSHP1RLqTCvZu4cVbJzF/wzE0wNffbGRSSgwPHMjhF7fKXVu2cOHAvty4/yBW4DZg9pgxdHr11SZ7foR/c7uc2K3F6AxmdOYAcndt5OCaZRTs3waKQnBCV0oO76vxx5w9rbjB9+PsPvKM13YNJ+pMazN+qvM4ilZH79/PwhQRi0arJ6LnBegtQQ2ORwjhIYmvEOKchCT2ZOC9Cznf7cLlsGOrquKrDd/WuoCEfvvHVFw5r87jubsMwdnpfEIKPcsWlwfoKQs1ARB/WjKc3j2s1vv459YcVDxT8uwulc9Ss/nstN9v2vEzwxKCeVCx0NFagfGrtex68X5iR/6O6H4XSomnNkJVVUoO/YKtpABTRCzmiHgOfvYmh9e9X91ba4nuSEXusRr1rIsP7m6a+zeHeiauaete7lc1h0JprueGomAKiyaoQxfcipZ8YMxTKwmK6dgkMQkhJPEVQjQRRaNFZzSjajwfK2Oe+pTi1K24XS7cTjt7VzyHLu0HHMf34Y6vY+EHtxN9pwvRuVYAUBpmrP5VWIGn1JmqQG58YK27PzE+geOlDownJtmpwHvfHmOnzZPYuFT4LqOU7060T1Zh2ZpPOLJ5DYHxyQTGJVL460+gKET1Hkby5D8S2qUv5VmHcVSUYYnuiDG46Wfhi8ZRVZXC1O3k7tyI2+UgNOk8NHoDe99bSHn2kep2Gr0Rt9NRY1x6Re4xzzGaaBGXGhyVUN8fUaqKUu6Z2GYICiNxwu9JuexWdKYAHA4Ha9aswRQe0/SxCdGOSeIrhGgW5sg4guOmVN/uMOwSMjb8h58DgrHXtaNGhyb0VA+XQ3+qx+zkMAdroAGXrvaetEiLgUhLzVqlSzsHUfprMYHAT4NiKA43E3+klJT9hcQDucWVFEYYsR5Px3o8vXq/4z9+TuYPqzGGRmEr9izMgaIh9oJxdLvyLgpTt2PNOozOHED8kEmEJnmWiFbdblTVjUYrH7GNpbrdFKXtwm4txhLdkaAOKeTs2MChte9SemQ/WoOZ6P4jKUzdTmlGKopWCyhnXYjF7bC1XOw6I44BV9TdyO0iUudg7MvrcNmr0FuCUOoaGiGEaBLyqSyEaBHG4HC6/m46h3/NJb+8ztQXp9FU/bPBdqo3TuPyjB526huWIIS6VPqd+LkszERxuImOJTbOP7Et3117reKTPYHVSa9nI9nbviJ761pQFM/QCFUl7b9vENqlDzqThfy9W0BVCUroRpeLbyJ6wGiOb1pDZWE2xpBIOg6/FFNYNKrbja0kHwBjSGSbT3xUVaUobRdVRbmYQqMIS+lHZUEWR9Z9SP6+rSiKQlSf4RiCQjnw2Zs1yujpA0NxWItrDEs4vHbFqWO7mqHXtpGcPcdCSGytQ3E8VBStlkHd4tEa9GgNxrO0E0I0NUl8hRAtqkOwqe7EV1Wp6JCIw6BFb3cRWnSqp86p06B3umskw94IKTwxRAIoC/YkGacfw1XPOMzaYjz5/+k9jL8dH1p29Fd2vj6nOgFSNDpUt4u97z5LZO+hlGcfoTL/OADmqA50mXwzpvAYjn73KVWFOZgj4ug06mqi+19E4f7tFKRuAxQizxtKeLcBJ+7zZ6qK8zGHxxCSdB6KouB2OjyX+RWFgJhO1bP/nZXl2K3FKKZTw0RUt5vKgixUVcUSGVc9xrkiL5PKgmyMIeEExiVVb8vfuwXV7SK8a3+COqZgzTrsqfJRkIUhOJyECy/HZbeR/r9l5O7+AVSV8O7nE9ZtAEe/+ZiKnKPV920IDsdhLa6OA/AMM6ll0ZRT7fwnwa12Ykngk0m5bug1dV/VQMGo1RBqlqoMQrQ0SXyFEC0qOSKAPdmluM62IJyioBjNWM8fRtiP32GqdNIr+SL2H91CWaiR8PxKAsod6G1uHMb6E1ZLmZ2QE8lzWYgR14ne4tATyTBAaWgz97idSJTV08pW5e/ZVKNJZV4me955wnNDowG3m5Ij+8je9hVaoxmXrbI6KU3990tYojt6ktYTiTOAJTaR8K79yd35DfYTNWUNQeF0vPByqgpzyNq61pM4Gsxw1TxSP15C1nefUlngWSTEGBpF3OCJlB7ZR2HqjurjBnfqjs4SSOH+HZyelJrCY6kqzK4xITB9zVKAGj2zubu+I3fnt2c8LfbSwtqerLqeST+gAGr144s5fyz6gGAcJ4ZkdBpzDZsqQqmorLtEmVv198cpRNvUahLfBQsWsHr1anbu3InBYKC4uLjefVRVZd68ebzxxhsUFxczYsQI/vnPf9K1a9fmD1gIUSuTXkufuGB2Hj97HVQVSL34aob+6JmClrI3n87/9x3Ou+6Ad94DoG9IL35yHTo1dlNRTvXEnqZLaiEnLzgfSwwGQOt0E3PcU0/YqVUoDfGzS80nej9P/u+yeVbAO7238+TErNNVZB+mIvtwjW32skLS/7eMkwmb5zie4x5c/TaK81SPuq04j8NfvnvGcUszUmsNs6ow+4y4TqqxrY6FTlqDk0lu3JDJOCtKcZSXEtghhcRx11b3vJ+kqiru/TlnOdIpQUbp7RXCF1pN4mu325k6dSrDhg3jrbfe8mqfZ555hsWLF7Ns2TKSkpL4+9//zqRJk9i7dy8mk6n+AwghmolyWhpWu4wJlzH4pSfR5OfBJ5+gX/0/9H+5vzrx7fBjKtE/fEfx0f2oqkpw555k/vAZBz59vbonMTy3ksQDxYAnwc1I9tT97XSwGP2J1eSOdwpG1Z5tLGZbIj2MXlEUNHojCRddQdmxA7jsNsK69CFx/O8J7tSt3t0PF1VQUlX7BLvTdY0MaIpohRAN1GoS3/nz5wOwdOlSr9qrqsqiRYuYM2cOV1zhmV27fPlyYmJiWLlyJddfX8eKOkKIZqXTKvWmYS6TmYpnniXw1ls8G265BdasgWHDYNMm2LcP/cIXiPrHP6r36XLxzSRNuIHi9D2wezdhd9xX3du7v28UdpMOS5mDnj/nV+9zqFtYUz404feUExUgVFSXi7Cu/YnsPYzigz+jKBoizxtKp1FXYQhq+OtCVVX2ZpfV2y7CoqdzuCwvLIQvtJrEt6EOHTpEdnY248ePr94WEhLCkCFD2LRp01kTX5vNhs126tJfaanncqzD4cDh8H5ZSdE8Tp4DORf+y5tzFGPRgReTlPaMmszAP/wB/vMfzzCGyy+Hm26C3bvB5YKFC6FTJ09SfJLTSdDnG2H+fJyVlWA2w8iRJC59kw7paQTc/idUvRGHHo73iqM4OgiN3khol94U/boTUKuHArRZOmP1/22zH1hB0WhqDLcwBIXRfco9uKoqsGYdQmu0EDtwLKFd+qDUUn2hMZ8xlQ4XpZX1l02LMJlwOZ3U9Q6Qzzr/J+fIv3h7HhRVbV0j7JcuXcrMmTPrHeP7ww8/MGLECI4fP05cXFz19muvvRZFUfjggw9q3e/RRx+t7l0+3YoVK7BY5C90IYQQQgh/U1FRwQ033EBJSQnBwcFnbefTHt/Zs2fz9NNP19lm37599OjRo4UigoceeohZs2ZV3y4tLSUhIYGJEyfW+USKluFwOFi7di0TJkxAr5fJIf7I23PkcLn57y/ZdfY4KkD36EB6R5jhqafghRc8Pb3euuQS6N3b02N88OCp7cnJsGoVdOjg1WFsxXlkb1+Po8pKQHQCYV0HcOjz5WRsXImryjPxLDS5NxV5x7CXnag1q6qnJnWdKHflN3RGuOJh+PQJcLbcwg5ndfrzc+Jnjc6A23mqKJgpLJrECb+n7FgaZUd/RWswEjtwPB0uvAy9JRhbUS5upxNTeHR1+baWlmO1sTG9oN52QzqFkRBqrrONfNb5PzlH/uXkFfr6+DTxvf/++7nl9EuUtUhOTm7UsWNjYwHIycmp0eObk5ND//79z7qf0WjEaDxzhrder5cXth+R8+H/6jtHbsWFWs+SripgcyvoLRZ47DG46ip4+mlPIuusfwIR//mP59/prr0WXnkFIiO9eBQe+qh4UibfWGNb3z8+SO/f34etpBCdyYI+IBiX3cbxLV+Qu+s7VJeD0C59Ce/Wn4Or3iZr27oTyZ1CePcBlOccxVach3JidTfV5TyRMLtrrU7RlKqP7rTVqOrQJE4msadX2TixMIfeHIij/NSXkyE4gs5jrqHs+EEK9m1FQSGq7wiSJ99EUMcUcn/+DntZMZboDkSdN7RG2bTfMsR0POvvWoLLrbLlaF69yxQbtRo6RwSh1Xg3oVI+6/yfnCP/4O058GniGxUVRVRUVLMcOykpidjYWNatW1ed6JaWlrJ582buvvvuZrlPIYT39FoNGgXOsmhaNZvztJ7SAQPg/fchJwe+/Ra2b4e0NNizBw4dAnsdywaMHQuzZsGllzbNAwA0OgPmiNjq21qDkYQLf0fChb+r0S78vgHYrSXYSgowBIVhDA7D7XKSs2MDBfu3ARDRcxDh3c/n6DefkLHh39WLUiSMvBq7tYgj6z6oThoNweFE9LiA/L1bqhd2AM/qZlq9kaqinOokUXW7MASFYbcWe2okKxrUk4loQBDOEluN5FsfGILbYa+uG6y6XSg6PWHJfSg+9Et1+ThFqyN24FgMQWEc+/4zXFUVaHR6Ooy4jM5jrqVg3xby9vyA6nYT0X0gncddizE0ivy9m6kqzMUUGknkeUPr7J2NHzzx3E5QCzpWUonNVX+v/vDEcK+TXiFE02s1k9syMjIoLCwkIyMDl8vFzp07AUhJSSEw0LMKUY8ePXjyySe56qqrUBSFmTNn8vjjj9O1a9fqcmbx8fFceeWVvnsgQggANIpCYriF9IKKOtsdL60iu6yK2KDTShDGxMDUqZ5/J5WXw3ffeZLhQ4c8PcLh4Z5kefhwz/AGHzIEhmAIDKm+rdHqiBs0nrhB42u0S7nsVlIuu/WM/XtcMwNr1mFQFAJjE9Ho9LiddvJ2/0BVcR6msBii+gxH0Wgp2LulRkId0XMQVYU5HPv+M6qKctGHRpMKjF/0FcWp28j/5UdAJbzbQGIGjMTlsJO9/WsqC7IwBkcQN2g8eksQjooyitJ+RnW7CE06D2NIBAB9p/0dZ2U5WpMFzYkkOrxbf7pecccZjyO6z4imeUL9TGGFvd4SfQABxlbztStEm9Rq3oFz585l2bJl1bcHDPAUDV+/fj2jR48GIDU1lZKSkuo2DzzwAOXl5dxxxx0UFxdz4YUX8vnnn0sNXyH8xHkxwWQUVeCso6NMAfZml9VMfGsTEACTJnn+tUEanYHghG5nbIsZMPqMtpHnDSHyvCE1tpkjYun6u+mAZ2xi6po1KBoN0X1HEN23ZjKqM5rpOPzMnnG9JeiMtuBZ4EEf0L7nQLjcqlcVMqSzVwjfajWJ79KlS+ut4fvbAhWKovDYY4/x2GOPNWNkQojGCjTqiA82k1FcedY2Kp5JQ063ik6yBuGHKh0ujhTVfeUCINiow6KvewywEKJ51b/QvRBCNCOtRsGbdNZd32BgIXxkX04Zdlf9r89esUG11gwWQrQcSXyFED4VatZ7dYk4v9wPym4J8RuqqpJeUF5vuwiLgaRwWaZYCF+TxFcI4VNJ4QFejXv8/nAhTi9mzQvRktwqOLy4GmExyBAHIfyBJL5CCJ8y6jQM6RRWbzunW+VIHWOBhfCFSkf99aQVwCxje4XwC5L4CiF8LjrwzEVjalNc6d1a7EK0BFVV+daLldpUIDFclrwXwh9I4iuE8DmNlxN+KuxerNYmRAvJKbNRUlX/a7JTqJkIi6EFIhJC1EcSXyGEz5n0WsLN9S83eaykilyrTHIT/iGrrMqriiT9O4TU30gI0SIk8RVC+IXzYutfAEEBdmeV1NtOiJZgc7q9qkgihPAfkvgKIfxCx1AzccF1j/VVgVyrnSqHq2WCEuIsrDYnGUX1T7Y06TQysU0IPyKJrxDCb4SY9F5dOrZLWTPhYzuPl+BS6+/v7RYV6PUYdiFE85PEVwjhNwINOq8uHR+VsmbCh+xON8e8eA0Gm3T0iA5qgYiEEN6SxFcI4Tc6h1m8Wszi56xSKW0mfKbS4fLqD7T4YBNab17QQogWI4mvEMJvGHQaBnYMrbedAqTlW5s9HiFqk+dlZRGTTsb2CuFvJPEVQviVlMhAdPX0kqlAfrmUNRMtr8zmZNuxYq/adgozN28wQogGk8RXCOF36kt8AcrtLpwyyU20sAN53l1p6BoZQIBB18zRCCEaShJfIYTfSQg111vdwe5S2Xy0qEXiEeKk7LKqesf36jRwvhdDdoQQLU8SXyGE3+kWFehVu4yiSqw2WcZYtAyXW6XCixrSBq1WSpgJ4ack8RVC+J1gk97rHrPjpVXNG4wQJ2w5WoTDVXd/rwLEBNW9EIsQwnck8RVC+KUws96rdiVS1ky0gLIqB4cLK+ptp+L9FQshRMuTxFcI4ZeCTTqvVnE7WFAuFR5Es8sorvTq9dg/PoRwi6HZ4xFCNI4kvkIIv2TUaensZTmonZklzRyNaO9KqhxeLVrRIcTU7LEIIRpPEl8hhN8a0CEUo7b+mr555XbK7TLJTTSPXKuNI0X1L1GsUcCsl0UrhPBnkvgKIfyWSa8lOcK78ZJS3UE0B1VV2eZF2TwFz5Lbeq18rQrhz+QdKoTwa0Em7xYB2H6sWBa0EE2uqNJBSVX9f1TptQp940JaICIhxLmQxFcI4dcSQs14sZAbJVVOfvVyVS0hvOVt1ZBeMcFYDDLMQQh/J4mvEMKvGbQa+sd715N2IL+8maMR7YnN6WJXlncTJ4O9vDIhhPAtSXyFEH6ve3QQoV4kFhUOF263DHcQTWN3VimVjvpfT3qtQmyQVHMQojWQxFcI0SqEWgxe1VHddqwYVfWm8JQQZ+d0q6R7sWAFQL+4ELTejMcRQvicJL5CiFahc6jZqzqqBwsqyCqTBS3EuSm3OXG563/FRQca6CortQnRakjiK4RoFeKCTURYvFvG+IBMchPnwOVW2ZJR6FXbqEBjM0cjhGhKkvgKIVoFRVEY1SUKrVL/JWVZwliciwP5VvIrvKvmkBDq3eqCQgj/IImvEKLVMOo0Xs2et7tUfj4uyxiLxvH2ikGHYBNhZkMzRyOEaEqS+AohWhVve9h+ySmjsMLezNGItsbhcmO1u+ptZ9JpGJYY3gIRCSGakiS+QohWJSUyAIOXy8KmSV1f0QBuVeXb9Hyv2sYGm2R5YiFaIXnXCiFaFaNOy9iukV61zSqtktJmwmvpBeXkWr27SpAQImN7hWiNJPEVQrQ6YWYDJl39H18VDhfbjxU3f0CiTfB25b9go474EFmwQojWSBJfIUSr1CnM4tWCFgfyy2Wsr6iXzemipLL+Sg5aDYxJiULjRXURIYT/kcRXCNEqdY8KROPlalkHC2Ssrzg7h8vNVwfyvFogJTrAiMWgbfaYhBDNQxJfIUSrFGjUMaaLd2N9jxZX4nC5mzki0VodLCintMrpVdvE8IBmjkYI0Zwk8RVCtFpRgUavKjzYnG6+OZiPWya6iVp4W/0jyKiTBSuEaOUk8RVCtGpJ4d6N9c0rt5NdWtXs8YjWJddqo8xWf2+vVlEYmxKJ1svhNUII/9RqEt8FCxYwfPhwLBYLoaGhXu1zyy23oChKjX+TJ09u3kCFEC2qe3QgOhnrKxqhtMrBhjQv6/YGGbAY6l81UAjh31pN4mu325k6dSp33313g/abPHkyWVlZ1f/ee++9ZopQCOELAQYd47pGedU2s6SKXKutmSMSrUVqntXr4S/JkYHNHI0QoiW0mj9f58+fD8DSpUsbtJ/RaCQ2NrYZIhJC+Iswi4EAg5byepaaVYFvDuZzWa9YzHqZmd+eqarKoYIKryo5RAYYiA+Wur1CtAWtJvFtrA0bNhAdHU1YWBhjx47l8ccfJyIi4qztbTYbNtupHqHS0lIAHA4HDkf9NR5F8zp5DuRc+C9fnaOkUBN7skvrbed0Q1pOCT1iglogKv/U3t9Hqqqy5WgRLlf9Y3uNWg0jOoXgcjqp+8+qptXez1FrIOfIv3h7HhS1la3nuXTpUmbOnElxcXG9bd9//30sFgtJSUkcPHiQhx9+mMDAQDZt2oRWW3tvz6OPPlrdu3y6FStWYLFYzjV8IYQQQgjRxCoqKrjhhhsoKSkhODj4rO18mvjOnj2bp59+us42+/bto0ePHtW3G5L4/lZ6ejpdunThq6++Yty4cbW2qa3HNyEhgfz8/DqfSNEyHA4Ha9euZcKECej1el+HI2rhy3Nkd7pZtS8btxefarFBRoYnhrfLFbja+/vo8/05WOsZFnPSxG5RBJta/jlq7+eoNZBz5F9KS0uJjIysN/H16VCH+++/n1tuuaXONsnJyU12f8nJyURGRpKWlnbWxNdoNGI0Gs/Yrtfr5YXtR+R8+D9fnCO9HuJCAjheWlXv2M3scidZVieJ4e33Sk57fB8dK67E6gQ09Y/x7h0bTESQb18f7fEctTZyjvyDt+fAp4lvVFQUUVHezcZuCseOHaOgoIC4uLgWu08hRMvqFh1Ippf1evfnlrXrxLe9ybPa2HiowKu2UQEG+sTJVT4h2ppWU84sIyODnTt3kpGRgcvlYufOnezcuROr1VrdpkePHnzyyScAWK1W/va3v/Hjjz9y+PBh1q1bxxVXXEFKSgqTJk3y1cMQQjSz2CAT58V6N3GtqNLBgTxr/Q1Fm7DreIlXi50AdI2S8mVCtEWtpqrD3LlzWbZsWfXtAQMGALB+/XpGjx4NQGpqKiUlJQBotVp+/vlnli1bRnFxMfHx8UycOJF//OMftQ5lEEK0HX3jQjhWXElJVf2z9rcdKybQqCNOylW1aQXldvLK7V61tei1dAyRpYmFaItaTeK7dOnSemv4nj5Pz2w288UXXzRzVEIIf9UtKpCtR4u9ars3u1QS3zaszOZk/cE8r9rqNApjZGliIdqsVjPUQQghGiIxzEKAwbtFKnLL7WSWVDZzRMJXNh8pxOHyroBR37hgn1RxEEK0DEl8hRBtkk6rYVzXKPRa73ruNqYXkFPm3aQ40XoUVXg/xEGrQFJEQDNHJITwJUl8hRBtVoBBR+8Y72bmq8DOzJLmDUi0qHK790McAAZ0CMWgla9FIdoyeYcLIdq05IgAvOz0pbDSweHC8uYNSLQIVVX55mA+Nqd3Qxy6RwVKJQch2gFJfIUQbZpBp2F4UoTX7TcdKZLxvm1AVlmVV1U9wPNFKDV7hWgfJPEVQrR5HUPM9G1AYvPjkSJc3qx7LPxSSZWDHw4Vet2+e3QgehniIES7IO90IUS70D06EJ2XJarsLje7s2S8b2tkc7pZdyAPh5d/uHQMMdE3PqSZoxJC+AtJfIUQ7YJOo2FAB+8TnH25VvbllDVjRKI5pOVbsTndXrU1aBVGJEWgUaRmrxDthSS+Qoh2IyUysEFDHnYeL6Gk0tGMEYmmdLS4kp+zSr1u3yM6SJJeIdoZSXyFEO1Kr5gggozeL1q55aiM920Ncsqq+O5Qgdft44KM9IgOasaIhBD+SBJfIUS7oihKg3p988vtfJ2Wh1OSX7/2UwNqMIeYdIzsIssSC9EeSeIrhGh3OoVZuCAh1Ov2+eV29ufKeF9/5HJ76vUWNWBISr/4EBniIEQ7JYmvEKJd6hoZSFK4xev2e7JKZUljP7TlaBHHS70/L4lhFuKDTc0YkRDCn0niK4Rot3rFBOHt1W4VWJ+Wz3FZ3MJv5JZVcbiwwuv2CSFmhnYOQ5HeXiHaLUl8hRDtVrBJz8jkSLxNg1TghyOFuFUZ7+trR4srWJeW73V7BRjcSZJeIdo7SXyFEO1aXLCJEQ1Y0tjhUvnf/hwqHK5mjErUpbTKwfcNWJkNPEmvQSdfeUK0d/IpIIRo9zqGmAgz671uX1rlZN2BXBwu7xZKEE2n3O5kY3oBDelzH9Y5jOSIgGaLSQjRekjiK4Ro9xRFYVSXSAIbUN/XanOxI7NYhj20IKvNyRf7cym1Ob3ep3OYmcRwSXqFEB6S+AohBGDWa7m0RzSmBlwOTy+oYENavixw0QJUVeX7wwXYGtDLbtFr6d8htPmCEkK0OpL4CiHECRqNhvM7hjZonxyrje3HipslHuFRYXexZl8OhRXe1+oNNumY2D0ai17bjJEJIVobSXyFEOI0ncMsDGrA4hYABwvK2XykUHp+m4HLrfJ1Wl6DhjcADE8MxyxJrxDiNyTxFUKI30iJDGRIp7AG7ZNeWMHGQwWoMua3yVTYnaxPy6OsgUnvoIRQwsyGZopKCNGaSeIrhBC1SAy3EBNobNA+WaVVbM4okmoPTaDC7uSL1Fzyyu0N2m90lwhSIgObKSohRGsnia8QQtRCc6LSQ2KYuUH7HSqs4Mtfc7E7JfltLKvNyddpeVQ18DnsFhVAXHDDzpcQon2RxFcIIc5Cq1EYlhhBVIDB69XdwFPn9+u0PCplkYsGyyqtYtXebMpsDXvukiMsDJAKDkKIekjiK4QQ9RiRFEGAsWETpYoqHXy2N5tcq62Zomp7ssqq+OZgfoMWpwDoHRvEkE7haGQ5YiFEPSTxFUKIepj1WiZ3jyE+2NSg/Vxula8P5JFVWtlMkbUNqqqyJaOQDWkNT3pjAo30iglulriEEG2PJL5CCOEFvVbDsM7hBBga1vOrAhsOFrDpcIGs8lYLh8vNt+kFHCyoaPC+3aMCGdUlEq1GenqFEN6RxFcIIbxk0GkY3y2aqAB9g/c9XFTJ1wdk3O/p8qw2Vu45zvHSqgbvmxRm5vyOoZL0CiEaRBJfIYRoAItey/huMQ0udQaQV27nv79kcay4fQ99cLlVUnPLWHcgj8YUv0gKtzCoU3jTByaEaPMk8RVCiEa4KNlT7aGh3CpsPFTAloyidtn7W+Vw8kVqDjsySxo8nhdgcKcwhnYOl55eIUSjSOIrhBCNoNdqGNc1ir5xjZtYdbCgnFV7s8kpa/hl/tbI5VbZl1PGp79kU1LVsJXYTuoXH0yXiIAmjkwI0Z7ofB2AEEK0VoqicF5sMG5VZU92WYP3d7pVvk7Lp0OwifM7hhJobJsfyaVVDr5NL2jw0sMn6TQKY1MiiQho+PASIYQ4Xdv8lBVCiBbUJy6EyAAj3x8uwOFq+AX8zNIqsvZlc15sMN2jAtFr28bFOKfLzeaMIjLOYUyzQaswvms0IeaGTygUQojfksRXCCGaQFywiUndY1j7ay62RszYcquwO6uUfTmlDOgQSnJEQKtdkMHmdLE/t4z9OVbOZeHmhFAz53cIwWKQryohRNOQTxMhhGgiQUYdk3vE8PPxEg4VNrwuLYDTDVuPFrM7q4S+caEkR1hQWkkC7El4raTmltGIju8aesYE0T8+pGkCE0KIEyTxFUKIJmTRaxnaOZwIi4Ftx4obfZwqp8qWo0X8lFlMj5ggvx4CUVrlYG9OGYcLKxpVqeF0Rp2GQQlhJISamyQ2IYQ4nSS+QgjRDLpGBRJi1rPtaFGjqxgAONwqu7NK2ZNVSnyIiZ7RQUQ1ooZwU3O63GQUV7A/13pOj+904WYdY7tG+22CL4Ro/STxFUKIZhIdaOTiHjFsySgivZFDH05SgcySKjJLqtBpFBLDLHQOtxBu0aPTtEyi6HSrZBSVc6Swkhyr7Zx7d0/SKDCwYyhJ4QFSn1cI0awk8RVCiGakKAqDO4WRFBHAj0cKKbef+6IVTrdKWkE5aQXlAERY9MQFm4gJMhEVYGiyMcGVDhdlNidZpVUcK6mkrMrZZMnuScEmHWO6RMoENiFEi5BPGiGEaGaKohAdaOSyXrHsOFbMgfzyJj1+QYWDggoHe7LLUPCUAAs1Gwg26Qgy6gg169EoCma9Fp1GwWb3DE2w2hzo3Ap2lxurzUml3ZPoFlc5KLM5G1Wdwlt6jeIZyxtmbrXVK4QQrY8kvkII0UI0isIFCWH0ignixyOF5FjtTX4fKmBzqeRYbeRYbbU3cruwAJ+n5oFG2+Qx1CcxzMz5HUMx6lr+voUQ7VurmEFw+PBhbrvtNpKSkjCbzXTp0oV58+Zht9f9pVFVVcU999xDREQEgYGBTJkyhZycnBaKWgghamcx6BiTEsWIxHCCTe2n/yHCYuCK82IZlhghSa8QwidaxSfu/v37cbvdvPbaa6SkpLBnzx6mT59OeXk5zz333Fn3u++++1i9ejUfffQRISEhzJgxg6uvvprvv/++BaMXQogzKYpCpzALncIsZJZUsvVoEZWO5hta4EuRAQb6xYc06fhjIYRojFaR+E6ePJnJkydX305OTiY1NZV//vOfZ018S0pKeOutt1ixYgVjx44F4O2336Znz578+OOPDB06tEViF0KI+nQIMRMXbCKzuJKfjpc0yQQ4fxATaOS82CBigky+DkUIIYBWkvjWpqSkhPDw8LP+fvv27TgcDsaPH1+9rUePHnTq1IlNmzadNfG12WzYbKfGxZWWlgLgcDhwOBxNFL1orJPnQM6F/5Jz1HixgXomd40g12rn17yyZhkDDIDbVfP/JqQokBBiol9cCEa9ZziDvBYaTt5H/k/OkX/x9jy0ysQ3LS2Nl156qc5hDtnZ2RgMBkJDQ2tsj4mJITs7+6z7Pfnkk8yfP/+M7V9++SUWi6XRMYumtXbtWl+HIOoh5+jcNfcnjuX47mY5bv5RWLenWQ7d7sj7yP/JOfIPFRXe1Ur3aeI7e/Zsnn766Trb7Nu3jx49elTfzszMZPLkyUydOpXp06c3eUwPPfQQs2bNqr5dWlpKQkICEydOJDg4uMnvTzSMw+Fg7dq1TJgwAb1e7+twRC3kHDWP4ko7BwvKySq1UXWuZcbcLizHd1MR3+ecqjoEGLR0DjPTMdRMsFHOdVOS95H/k3PkX05eoa+PTxPf+++/n1tuuaXONsnJydU/Hz9+nDFjxjB8+HBef/31OveLjY3FbrdTXFxco9c3JyeH2NjYs+5nNBoxGs9cDlSv18sL24/I+fB/co6aVpReT1RwAABlNieHC8rJLrNRVOnApTZyWQmNtkGJr1ajEBtkJCHETFSgkUBjq7xo2KrI+8j/yTnyD96eA59+akVFRREVFeVV28zMTMaMGcPAgQN5++230dSzROfAgQPR6/WsW7eOKVOmAJCamkpGRgbDhg0759iFEMJXgow6+sSH0AdwuVUKK+yU2hzkW+3kl9updLhwuM9tjTWdAiFmPWFmAxEBBjqFmVtsaWQhhGgureLP9czMTEaPHk3nzp157rnnyMvLq/7dyd7bzMxMxo0bx/Llyxk8eDAhISHcdtttzJo1i/DwcIKDg7n33nsZNmyYVHQQQrQZWo1CVKCRqEAjXSJObbc5XVjtLlBViisdVDnduFVwut04HA6yjkG3qAD0Oj0Wg2dFN71WQ3SgAY2iQaMgpceEEG1Oq0h8165dS1paGmlpaXTs2LHG79QTl/gcDgepqak1Bje/8MILaDQapkyZgs1mY9KkSSxZsqRFYxdCCF8w6rTVi0REBNQcvuVwOMjaBX3jQuQSrRCiXWkVie8tt9xS71jgxMTE6iT4JJPJxCuvvMIrr7zSjNEJIYQQQojWQAZsCSGEEEKIdkESXyGEEEII0S5I4iuEEEIIIdoFSXyFEEIIIUS7IImvEEIIIYRoFyTxFUIIIYQQ7YIkvkIIIYQQol2QxFcIIYQQQrQLkvgKIYQQQoh2QRJfIYQQQgjRLkjiK4QQQggh2gVJfIUQQgghRLsgia8QQgghhGgXdL4OwN+pqgpAaWmpjyMRAA6Hg4qKCkpLS9Hr9b4OR9RCzpH/k3Pk/+Qc+T85R/7lZJ52Mm87G0l861FWVgZAQkKCjyMRQgghhBB1KSsrIyQk5Ky/V9T6UuN2zu12c/z4cYKCglAUxdfhtHulpaUkJCRw9OhRgoODfR2OqIWcI/8n58j/yTnyf3KO/IuqqpSVlREfH49Gc/aRvNLjWw+NRkPHjh19HYb4jeDgYPmg8XNyjvyfnCP/J+fI/8k58h919fSeJJPbhBBCCCFEuyCJrxBCCCGEaBck8RWtitFoZN68eRiNRl+HIs5CzpH/k3Pk/+Qc+T85R62TTG4TQgghhBDtgvT4CiGEEEKIdkESXyGEEEII0S5I4iuEEEIIIdoFSXyFEEIIIUS7IImvaJUOHz7MbbfdRlJSEmazmS5dujBv3jzsdruvQxOnWbBgAcOHD8disRAaGurrcATwyiuvkJiYiMlkYsiQIWzZssXXIYnTfPvtt1x++eXEx8ejKAorV670dUjiN5588kkGDRpEUFAQ0dHRXHnllaSmpvo6LOElSXxFq7R//37cbjevvfYav/zyCy+88AKvvvoqDz/8sK9DE6ex2+1MnTqVu+++29ehCOCDDz5g1qxZzJs3jx07dtCvXz8mTZpEbm6ur0MTJ5SXl9OvXz9eeeUVX4cizuKbb77hnnvu4ccff2Tt2rU4HA4mTpxIeXm5r0MTXpByZqLNePbZZ/nnP/9Jenq6r0MRv7F06VJmzpxJcXGxr0Np14YMGcKgQYN4+eWXAXC73SQkJHDvvfcye/ZsH0cnfktRFD755BOuvPJKX4ci6pCXl0d0dDTffPMNI0eO9HU4oh7S4yvajJKSEsLDw30dhhB+yW63s337dsaPH1+9TaPRMH78eDZt2uTDyIRo3UpKSgDk+6eVkMRXtAlpaWm89NJL3Hnnnb4ORQi/lJ+fj8vlIiYmpsb2mJgYsrOzfRSVEK2b2+1m5syZjBgxgt69e/s6HOEFSXyFX5k9ezaKotT5b//+/TX2yczMZPLkyUydOpXp06f7KPL2ozHnSAgh2qJ77rmHPXv28P777/s6FOElna8DEOJ0999/P7fcckudbZKTk6t/Pn78OGPGjGH48OG8/vrrzRydgIafI+EfIiMj0Wq15OTk1Niek5NDbGysj6ISovWaMWMGq1at4ttvv6Vjx46+Dkd4SRJf4VeioqKIioryqm1mZiZjxoxh4MCBvP3222g0cgGjJTTkHAn/YTAYGDhwIOvWraueLOV2u1m3bh0zZszwbXBCtCKqqnLvvffyySefsGHDBpKSknwdkmgASXxFq5SZmcno0aPp3Lkzzz33HHl5edW/k94r/5GRkUFhYSEZGRm4XC527twJQEpKCoGBgb4Nrh2aNWsWN998MxdccAGDBw9m0aJFlJeXM23aNF+HJk6wWq2kpaVV3z506BA7d+4kPDycTp06+TAycdI999zDihUr+PTTTwkKCqoeIx8SEoLZbPZxdKI+Us5MtEpLly4965e1vKT9xy233MKyZcvO2L5+/XpGjx7d8gEJXn75ZZ599lmys7Pp378/ixcvZsiQIb4OS5ywYcMGxowZc8b2m2++maVLl7Z8QOIMiqLUuv3tt9+udxiY8D1JfIUQQgghRLsggyKFEEIIIUS7IImvEEIIIYRoFyTxFUIIIYQQ7YIkvkIIIYQQol2QxFcIIYQQQrQLkvgKIYQQQoh2QRJfIYQQQgjRLkjiK4QQQggh2gVJfIUQQgghRLsgia8QQvjALbfcgqIoZ/xLS0trkuMvXbqU0NDQJjlWY3377bdcfvnlxMfHoygKK1eu9Gk8Qgghia8QQvjI5MmTycrKqvEvKSnJ12GdweFwNGq/8vJy+vXrxyuvvNLEEQkhRONI4iuEED5iNBqJjY2t8U+r1QLw6aefcv7552MymUhOTmb+/Pk4nc7qfZ9//nn69OlDQEAACQkJ/OlPf8JqtQKwYcMGpk2bRklJSXVP8qOPPgpQa89raGgoS5cuBeDw4cMoisIHH3zAqFGjMJlMvPvuuwC8+eab9OzZE5PJRI8ePViyZEmdj+/iiy/m8ccf56qrrmqCZ0sIIc6dztcBCCGEqGnjxo3cdNNNLF68mIsuuoiDBw9yxx13ADBv3jwANBoNixcvJikpifT0dP70pz/xwAMPsGTJEoYPH86iRYuYO3cuqampAAQGBjYohtmzZ7Nw4UIGDBhQnfzOnTuXl19+mQEDBvDTTz8xffp0AgICuPnmm5v2CRBCiGYiia8QQvjIqlWraiSkF198MR999BHz589n9uzZ1QllcnIy//jHP3jggQeqE9+ZM2dW75eYmMjjjz/OXXfdxZIlSzAYDISEhKAoCrGxsY2KbebMmVx99dXVt+fNm8fChQurtyUlJbF3715ee+01SXyFEK2GJL5CCOEjY8aM4Z///Gf17YCAAAB27drF999/z4IFC6p/53K5qKqqoqKiAovFwldffcWTTz7J/v37KS0txel01vj9ubrggguqfy4vL+fgwYPcdtttTJ8+vXq70+kkJCTknO9LCCFaiiS+QgjhIwEBAaSkpJyx3Wq1Mn/+/Bo9rieZTCYOHz7MZZddxt13382CBQsIDw/nu+++47bbbsNut9eZ+CqKgqqqNbbVNnntZBJ+Mh6AN954gyFDhtRod3JMshBCtAaS+AohhJ85//zzSU1NrTUpBti+fTtut5uFCxei0XjmKH/44Yc12hgMBlwu1xn7RkVFkZWVVX37wIEDVFRU1BlPTEwM8fHxpKenc+ONNzb04QghhN+QxFcIIfzM3Llzueyyy+jUqRPXXHMNGo2GXbt2sWfPHh5//HFSUlJwOBy89NJLXH755Xz//fe8+uqrNY6RmJiI1Wpl3bp19OvXD4vFgsViYezYsbz88ssMGzYMl8vFgw8+iF6vrzem+fPn8+c//5mQkBAmT56MzWZj27ZtFBUVMWvWrFr3sVqtNeoSHzp0iJ07dxIeHk6nTp3O7UkSQohGkHJmQgjhZyZNmsSqVav48ssvGTRoEEOHDuWFF16gc+fOAPTr14/nn3+ep59+mt69e/Puu+/y5JNP1jjG8OHDueuuu7juuuuIiorimWeeAWDhwoUkJCRw0UUXccMNN/DXv/7VqzHBt99+O2+++SZvv/02ffr0YdSoUSxdurTOusPbtm1jwIABDBgwAIBZs2YxYMAA5s6d29inRgghzomi/nawlxBCCCGEEG2Q9PgKIYQQQoh2QRJfIYQQQgjRLkjiK4QQQggh2gVJfIUQQgghRLsgia8QQgghhGgXJPEVQgghhBDtgiS+QgghhBCiXZDEVwghhBBCtAuS+AohhBBCiHZBEl8hhBBCCNEuSOIrhBBCCCHahf8HuNfztjTtR+YAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Normalized saliency values saved to normalized_saliency_values.csv\n",
            "Normalized Saliency Top-k:\n",
            "     Saliency\n",
            "375  1.000000\n",
            "165  0.990589\n",
            "258  0.926819\n",
            "80   0.883283\n",
            "166  0.863907\n",
            "Normalized Saliency Max: Saliency    1.0\n",
            "dtype: float32\n",
            "Normalized Saliency Min: Saliency    0.0\n",
            "dtype: float32\n",
            "Normalized Saliency Mean: Saliency    0.048057\n",
            "dtype: float32\n",
            "Normalized Saliency Median: Saliency    0.005579\n",
            "dtype: float32\n",
            "Normalized Saliency Mode:    Saliency\n",
            "0  0.001595\n",
            "1  0.003891\n",
            "Normalized Saliency Sum: Saliency    23.067486\n",
            "dtype: float32\n",
            "#\n",
            "#\n",
            "#\n",
            "Normalized Saliency Standard Deviation: Saliency    0.146253\n",
            "dtype: float32\n",
            "Normalized Saliency Skewness: Saliency    4.439018\n",
            "dtype: float32\n",
            "Normalized Saliency Kurtosis: Saliency    20.517704\n",
            "dtype: float32\n",
            "Normalized Saliency Variance: Saliency    0.02139\n",
            "dtype: float32\n",
            "Normalized Saliency Coefficient of Variation: Saliency    304.329773\n",
            "dtype: float32\n",
            "#\n",
            "#\n",
            "#\n",
            "Cumulative Sum of Normalized Saliency Values:       Saliency\n",
            "0     0.003891\n",
            "1     0.007762\n",
            "2     0.011631\n",
            "3     0.015524\n",
            "4     0.019435\n",
            "..         ...\n",
            "475  23.061300\n",
            "476  23.062693\n",
            "477  23.064449\n",
            "478  23.065886\n",
            "479  23.067480\n",
            "\n",
            "[480 rows x 1 columns]\n",
            "Mean of Cumulative Sum of Normalized Saliency Values:      Saliency\n",
            "0    0.000008\n",
            "1    0.000016\n",
            "2    0.000024\n",
            "3    0.000032\n",
            "4    0.000040\n",
            "..        ...\n",
            "475  0.048044\n",
            "476  0.048047\n",
            "477  0.048051\n",
            "478  0.048054\n",
            "479  0.048057\n",
            "\n",
            "[480 rows x 1 columns]\n",
            "Normalized Saliency Root Mean Square: 0.15380101\n",
            "Normalized Saliency 25th Percentile: Saliency    0.004145\n",
            "Name: 0.25, dtype: float64\n",
            "Normalized Saliency 75th Percentile: Saliency    0.00956\n",
            "Name: 0.75, dtype: float64\n",
            "Normalized Saliency Interquartile Range: Saliency    0.005415\n",
            "dtype: float64\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "wfZCzuq9KY9b",
        "outputId": "2b640c28-6401-4b97-a513-8de11dd26598"
      },
      "execution_count": 67,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1712724125.970031\n",
            "Wed Apr 10 04:42:05 2024\n"
          ]
        }
      ]
    }
  ]
}